65.9K
CodeProject 正在变化。 阅读更多。
Home

CVisualEffect

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (17投票s)

2004年5月17日

1分钟阅读

viewsIcon

64630

downloadIcon

1834

一个从 CStatic 派生的类,用于在图像上显示一些视觉效果。

Sample Image - VisualEffect1.jpg

引言

在本文中,我想向您展示一种创建简单视觉效果的方法。我使用一些图像处理技术和一个非常有用的库,名为 CImg,由 David Tschumperlé 编写,来创建这个 CStatic 派生的有趣控件。

如何使用

首先,将以下文件添加到您的项目中:VisualEffect.hVisualEffect.cppCImg.hCImg.cpp。 创建图像的大部分工作都在 CImg.h 头文件中完成。 在 VisualEffect.h 中,定义了两个类:CVisualEffectCImgDisplayExCImgDisplay 的扩展版本,用于将其适配到我们的 CStatic 派生类:CVisualEffect)。

在对话框资源编辑器中,添加一个新的静态控件,并将它的 ID 从 IDC_STATIC 重命名为 IDC_VISUAL_EFFECT。 参见图 2 以获取更多信息。

运行类向导,将新的成员变量分配给您的对话框,类型为 CVisualEffect(图 3)。

如果类向导无法识别 CVisualEffect 类,请选择 CStatic,然后将变量的类型从 CStatic 重命名为 CVisualEffect。 请记住,您必须在对话框头文件的顶部添加 #include "VisualEffect.h"

CVisualEffect 类有两个重要的成员函数

void SetImage(CString FileName);

使用此成员函数设置要由类加载的图像。 类将在调用 DrawImage() 成员函数后显示效果图像。

void DrawImage();

此成员函数必须动态创建视觉效果图像,并借助线程显示它们。

CVisualEffect 类

CVisualEffect 是一个从 CStatic 派生的类,具有以下定义

class CVisualEffect : public CStatic
{
// Construction
public:
    CVisualEffect();
    void SetImage(CString FileName);
    void DrawImage();

// Attributes
public:
    CImg<float>    m_Original;
    CImgDisplayEx    m_Display;


// Implementation
public:
    static UINT DrawThread(LPVOID pParam);
    virtual ~CVisualEffect();

    // Generated message map functions
protected:
    //{{AFX_MSG(CVisualEffect)
    //}}AFX_MSG

    DECLARE_MESSAGE_MAP()
};

m_Display 是一个类型为 CImgDisplayEx 的成员变量。 此类设置一个目标窗口,用于快速图像处理。

尽情享用!

© . All rights reserved.