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

来源:互联网 发布:民国公元纪年法的算法 编辑:程序博客网 时间:2024/05/18 03:10

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)”,为其添加子菜单,如下图


IDCaptionPromptID_IMAGE_PREV上一张\tPage Up上一张\n 上一张ID_IMAGE_NEXT下一张\tPage Down下一张\n 下一张ID_IMAGE_FIRST第一张\tHome第一张\n 第一张ID_IMAGE_LAST最后一张\tEnd最后一张\n 最后一张ps:Prompt为指定菜单项时出现在状态栏的文字
添加一个“显示模式”的新菜单


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


IDCaptionPromptID_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, 15BEGIN    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_ABOUTEND

修改快捷键(Accelarator)

IDR_MAINFRAME ACCELERATORSBEGIN//省略原来的代码VK_HOME,        ID_IMAGE_FIRST,         VIRTKEYVK_END,         ID_IMAGE_LAST,          VIRTKEYVK_NEXT,        ID_IMAGE_NEXT,          VIRTKEYVK_PRIOR,       ID_IMAGE_PREV,          VIRTKEYEND

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

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

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



0 0