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

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设置为“控制窗口”



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值