实现如幻灯片般的漂亮的图片切换特效

本文介绍如何利用GDI/GDI+ API创建类似PowerPoint幻灯片和走马灯效果的图片切换特效。通过CChildView类和定时器实现不同类型的图像转场效果,包括向下扫描、向右移动、百叶窗等。代码参考了《Visual C++数字图像处理开发入门与编程实践》一书,并提供了代码下载链接。虽然GDI绘制可能导致界面卡顿,但使用DirectDraw或D3D可以改进这个问题。
摘要由CSDN通过智能技术生成

大家对PowerPoint的幻灯片特效一定不陌生,还有Windows系统的屏保模式所展现的一张张漂亮动态的图片效果(走马灯特效),这些效果十分吸引人,在很多广告播放器中都经常用到。

这一节我就给大家展现一个例子,讲解如何利用GDI/GDI+ API实现图片切换特效的。

  先亮一下这个例子的界面:

       

这个例子部分代码参考了电子工业出版社出版的《Visual C++数字图像处理开发入门与编程实践》一书中的一个例子,支持如下几种特效:

特效显示类型
//enum EffectDislayType
//{
//    EDT_NONE = 0,            // 无特效
//    EDT_SCANDOWN = 1,        // 向下扫描
//    EDT_VSCAN,                // 垂直双重扫描
//    EDT_MOVERIGHT,            // 向右移动
//    EDT_HSMOVE,                // 水平双重移动
//    EDT_VBLIND,                // 垂直百叶窗
//    EDT_HBLIND,                // 水平百叶窗
//    EDT_VRASTER,            // 垂直栅条
//    EDT_HRASTER,            // 水平栅条
//    EDT_MOSAIC,                // 马赛克
//    EDT_ALPHABLEND,         //淡入淡出
//    EDT_RAND                // 随机特效
//};

这个例子名叫Slideshow,负责显示图像和切换的窗口类为CChildView,继承于CWnd,类声明如下:

// CChildView 窗口

class CChildView : public CWnd
{
// 构造
public:
	CChildView();

// 属性
public:

// 操作
public:

	void  LoadFolderImages(); //加载目录里的图片

	void  BeginEffect(); //开始显示切换动画
	void  EndEffect(); //结束动画

	void  SetPicFolderPath(CString strPath)
	{
          m_strPath = strPath;
	}

	CString GetPicFolderPath()
	{
		return m_strPath;
	}

	int   GetPicCount()
	{
		return m_nPicNum;
	}

	//设置特效类型
	void SetEffectType(EffectDislayType nEffectType)
	{
		m_nEffectDisplayType = nEffectType;
	}

    EffectDislayType  GetEffectType()
	{
		return m_nEffectDisplayType;
	}

// 重写
	
protected:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

// 实现
public:
	virtual ~CChildView();

	// 生成的消息映射函数
protected:
	afx_msg void OnPaint();
	afx_msg void OnTime
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值