您的位置:首页 > 其它

图像显示特效工程GraphShow构建(一):概要设计

2014-06-09 08:17 393 查看
VS2012下新建MFC单文档工程,添加C++类EffectDisplay.

在EffectDisplay.h中添加

//显示特效枚举
enum EffectDisplayType
{
EDT_SCANDOWN = 0,         //向下扫描
EDT_VSCAN,                //垂直双重扫描
EDT_MOVERIGHT,            //向右移动
EDT_HSMOVE,               //水平双重移动
EDT_VBLIND,               //垂直百叶窗
EDT_HBLIND,               //水平百叶窗
EDT_VRASTER,              //垂直栅条
EDT_HRASTER,              //水平栅条
EDT_MOSAIC,               //马赛克
EDT_RAINDROP,             //雨滴

EDT_NONE,                 //无特效
EDT_RAND                  //随机特效
};

class EffectDisplay
{
public:
static int s_nOffsetX;    //图像在内存CDC中的x偏移量
static int s_nOffsetY;    //图像在内存CDC中的y偏移量
static int s_nPicWidth;   //图像的宽度
static int s_nPicHeight;  //图像的高度
static int s_nCDCWidth;   //内存CDC的宽度
static int s_nCDCHeight;  //内存CDC的高度
};


在EffectDisplay.cpp中添加

#include <cmath>

//静态成员遍历初始化
int EffectDisplay::s_nOffsetX = 0;
int EffectDisplay::s_nOffsetY = 0;
int EffectDisplay::s_nPicWidth = 0;
int EffectDisplay::s_nPicHeight = 0;
int EffectDisplay::s_nCDCWidth = 0;
int EffectDisplay::s_nCDCHeight = 0;

具体相应实现特效的方法之后再添加。

在“视图”菜单项中添加一个菜单项,ID为ID_VIEW_CONTROL,Caption属性为“控制窗口(&C)”

插入分隔符,然后添加一个弹出菜单,Caption属性为“图像(&I)”,为其添加子菜单,如下图



IDCaptionPrompt
ID_IMAGE_PREV上一张\tPage Up上一张\n 上一张
ID_IMAGE_NEXT下一张\tPage Down下一张\n 下一张
ID_IMAGE_FIRST第一张\tHome第一张\n 第一张
ID_IMAGE_LAST最后一张\tEnd最后一张\n 最后一张
ps:Prompt为指定菜单项时出现在状态栏的文字

添加一个“显示模式”的新菜单



IDCaptionPrompt
ID_MODE_NORMAL原始大小原始大小\n 原始大小
ID_MODE_WIDTH适合宽度适合宽度\n 适合宽度
ID_MODE_HEIGHT适合高度适合高度\n 适合高度
ID_MODE_SCREEN适合屏幕适合屏幕\n 适合屏幕
添加一个“显示特效”的菜单



IDCaptionPrompt
ID_EFFECT_NONE不显示特效
ID_EFFECT_RAND随机以随机方式显示特效
ID_EFFECT_SCANDOWN向下扫描适合高度\n 适合高度
ID_EFFECT_VSCAN垂直双重扫描适合屏幕\n 适合屏幕
ID_EFFECT_MOVERIGHT向右移动向右移动
ID_EFFECT_HSMOVE水平双重移动水平双重移动
ID_EFFECT_VBLIND垂直百叶窗垂直百叶窗
ID_EFFECT_SBLIND水平百叶窗水平百叶窗
ID_EFFECT_VRASTER垂直栅条垂直栅条
ID_EFFECT_HRASTER水平栅条水平栅条
ID_EFFECT_MOSAIC马赛克马赛克
ID_EFFECT_RAINDROP雨滴雨滴
编辑工具栏,仅保留“打开”和“帮助”按钮,其余全部删除,然后添加6个新工具栏按钮。

表示VS2012不太会编辑工具栏

直接导入已有toolbar.bmp并修改.rc文件了



IDR_MAINFRAME           BITMAP                  "res\\Toolbar.bmp"

/////////////////////////////////////////////////////////////////////////////
//
// Toolbar
//

IDR_MAINFRAME TOOLBAR 16, 15
BEGIN
BUTTON      ID_FILE_OPEN
SEPARATOR
BUTTON      ID_IMAGE_PREV
BUTTON      ID_IMAGE_NEXT
SEPARATOR
BUTTON      ID_MODE_NORMAL
BUTTON      ID_MODE_WIDTH
BUTTON      ID_MODE_HEIGHT
BUTTON      ID_MODE_SCREEN
SEPARATOR
BUTTON      ID_APP_ABOUT
END

修改快捷键(Accelarator)

IDR_MAINFRAME ACCELERATORS
BEGIN
//省略原来的代码
VK_HOME,        ID_IMAGE_FIRST,         VIRTKEY
VK_END,         ID_IMAGE_LAST,          VIRTKEY
VK_NEXT,        ID_IMAGE_NEXT,          VIRTKEY
VK_PRIOR,       ID_IMAGE_PREV,          VIRTKEY
END


新建对话框(Dialog)资源,改名为IDD_PREV,创建对应对话框类CPrevDlg。

由于要使用对话框类的动态创建功能,所以需要将.h文件的DECLARE_DYNAMIC宏改成DECLARE_DYNCREATE宏,同时将cpp文件中的IMPLEMENT_DYNAMIC宏改成IMPLEMENT_DYNCREATE宏。

IDD_PREV的Caption设置为“控制窗口”



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: