图像显示特效工程GraphShow构建(一):概要设计
2014-06-09 08:17
393 查看
VS2012下新建MFC单文档工程,添加C++类EffectDisplay.
在EffectDisplay.h中添加
在EffectDisplay.cpp中添加
具体相应实现特效的方法之后再添加。
在“视图”菜单项中添加一个菜单项,ID为ID_VIEW_CONTROL,Caption属性为“控制窗口(&C)”
插入分隔符,然后添加一个弹出菜单,Caption属性为“图像(&I)”,为其添加子菜单,如下图
ps:Prompt为指定菜单项时出现在状态栏的文字
添加一个“显示模式”的新菜单
添加一个“显示特效”的菜单
编辑工具栏,仅保留“打开”和“帮助”按钮,其余全部删除,然后添加6个新工具栏按钮。
表示VS2012不太会编辑工具栏
直接导入已有toolbar.bmp并修改.rc文件了
修改快捷键(Accelarator)
新建对话框(Dialog)资源,改名为IDD_PREV,创建对应对话框类CPrevDlg。
由于要使用对话框类的动态创建功能,所以需要将.h文件的DECLARE_DYNAMIC宏改成DECLARE_DYNCREATE宏,同时将cpp文件中的IMPLEMENT_DYNAMIC宏改成IMPLEMENT_DYNCREATE宏。
IDD_PREV的Caption设置为“控制窗口”
在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)”,为其添加子菜单,如下图
ID | Caption | Prompt |
ID_IMAGE_PREV | 上一张\tPage Up | 上一张\n 上一张 |
ID_IMAGE_NEXT | 下一张\tPage Down | 下一张\n 下一张 |
ID_IMAGE_FIRST | 第一张\tHome | 第一张\n 第一张 |
ID_IMAGE_LAST | 最后一张\tEnd | 最后一张\n 最后一张 |
添加一个“显示模式”的新菜单
ID | Caption | Prompt |
ID_MODE_NORMAL | 原始大小 | 原始大小\n 原始大小 |
ID_MODE_WIDTH | 适合宽度 | 适合宽度\n 适合宽度 |
ID_MODE_HEIGHT | 适合高度 | 适合高度\n 适合高度 |
ID_MODE_SCREEN | 适合屏幕 | 适合屏幕\n 适合屏幕 |
ID | Caption | Prompt |
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 | 雨滴 | 雨滴 |
表示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设置为“控制窗口”
相关文章推荐
- 图像显示特效工程GraphShow构建(二)
- 图像显示特效工程GraphShow构建(一)
- <@乌龟:>[原创]设计自己的3D图像引擎(4): WuguiEngine 之模型、特效、贴图
- 中介者设计模式在视频监控的显示图像模块中的应用
- 软件工程视频学习——第四章——概要设计
- 软件工程概要设计文档模型
- Makefile构建工程设计——Makefile函数调用
- Makefile构建工程设计——工程构建与编写规则
- VS2010 C++学习(3):BMP图像文件的特效显示
- 【美工设计 - Adobe Illustrator】基本设置 (图像显示 | 图像缩放 | 置入导出 | 标尺 | 网格 | 参考线 | 画板)
- 工程设计和实现构建文件的方法--提出一组问题
- Makefile构建工程设计——工程组织Makefile的嵌套
- FPGA设计——CMOS图像采集与以太网传输显示(OV7670)
- 使用gdal读取图像数据,然后用构建gdi+位图显示
- 《HTML&CSS设计与构建网站》第五章 图像
- 软件工程4-软件概要设计
- gdal读取图像数据,构建gdi+显示
- 设计自己的软渲染器2-构建3D世界到2D屏幕显示的基本变换
- FPGA设计——全局曝光CMOS图像采集与USB2.0显示
- VC数字图像处理编程讲座之四--BMP图像显示的特效操作