- 10
- 0
- 约5.1千字
- 约 7页
- 2016-11-27 发布于河南
- 举报
使用GDI显示GIF动画P424
《Visual C++ 开发实战宝典》10.6 GDI+ 图像处理 10.6.2 使用GDI+ 显示GIF动画 P424
①定义下面内存画布CMemDC,加速图像处理,否则会出现闪烁!!
②以下洋红部分,为将内存画布背景设置成白色。然后,在此上面绘制GIF图像帧。
③以下蓝色部分,为将内存画布颜色设成画刷颜色。为实现GIF背景与窗口客户区颜色一致。
④断言:ASSERT(this-GetDeviceCaps(RASTERCAPS)RC_BITBLT==RC_BITBLT),用来判断画面是否
支持PatBlt函数。
⑤在CMemDC构造函数中,若不向内存画布绘制白色或其它颜色或图案,将构造函数中的洋红与蓝色部分注释掉。则显示原汁原味GIF动画(和ACDSee中看到的一样,即保持原背景色)。如下图
⑥ 析构函数中的BitBlt()函数不可缺少!
? ? ?内存画布对象CMemDC dc是OnTimer定时器处理函数中的局部变量,OnTimer作用是定时显示GIF动画帧。
第执行一次,将一帧画绘制到内存画布dc上,OnTimer()执行退出后,调用调用析构函数中的BitBlt()函数将内存画布dc中的图像绘制到窗口客户区指定的部分。
? ? 可见,内存画布dc中的图像包括2部分:其一,在构造函数中绘制的背景(如白色或其它画刷图案),当然,也可以不用绘制背景。其二,在OnTimer()函数中绘制的动画帧。
class CMemDC : public CDC? //定义一个CMemDC类
{
private:
CBitmap* m_bmp; //定义一个位图对象
CBitmap* m_oldbmp; //定义一个位图对象
? CDC* m_pDC; //定义一个设备上下文指针
CRect m_Rect; //定义一个区域对象
public:
CMemDC(CDC* pDC, const CRect rect) : CDC() //定义构造函数
{
CreateCompatibleDC(pDC); //创建一个兼容的设备上下文
m_bmp = new CBitmap; //为位图对象分配空间
//创建位图对象
? m_bmp-CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
? m_oldbmp = SelectObject(m_bmp); //选中创建的位图到内存画布
? m_pDC = pDC; //设置成员变量
m_Rect = rect; //设置区域对象
//? this-BitBlt(0, 0, m_Rect.Width(), m_Rect.Height(),?
//? pDC, m_Rect.left, m_Rect.top,?WHITENESS?); //绘制白色背景 ,若想采用任意颜色,如下蓝色部分
//? 判断是否支持PatBlt函数
? ASSERT(this-GetDeviceCaps(RASTERCAPS)RC_BITBLT==RC_BITBLT);?
CBrush brush;
brush.CreateSolidBrush(RGB(236,233,216)); ?//RGB(,,)是对话框背景色,使用取色软件ColorPix 获得。
SelectObject(brush);
this-PatBlt(0,0,m_Rect.Width(),m_Rect.Height(),PATCOPY); //将画刷色彩拷贝到内存画布。
}
~CMemDC()? //析构函数
{
m_pDC-BitBlt(m_Rect.left, m_Rect.top, m_Rect.Width(), m_Rect.Height(),?
this,?0, 0, SRCCOPY);//绘制图像,将内存画布上的图像拷贝到窗口画布上。
SelectObject(m_oldbmp); //选中原来的位图对象
if (m_bmp != NULL)? //判断位图对象是否为空
delete m_bmp; //删除位图对象
DeleteObject(this); //释放设备上下文
}
};
下面给出OnTimer()函数
void COutputGIFDlg::OnTimer(UINT nIDEvent)?
{
GUID Guid = FrameDimensionTime;
您可能关注的文档
- Macro17The Economic Growth in China宏观经济学(南开大学,龚刚).ppt
- 上财 宏观经济学 PPT Macroeconomic --Chapter 22 monitoring jobs and inflations.ppt
- ObjectUtil对象.doc
- PHOTOSHOP CS2 智慧对象Smart Object应用.doc
- entern.doc
- BACnet对象说明.docx
- C∕C++年试题.doc
- Macro7The IS - LM Model宏观经济学(南开大学,龚刚).ppt
- macro economics chapter07.ppt
- macro economics chapter10.ppt
最近下载
- 制造业信息化战略规划实施与优化-PDM.docx VIP
- 那智不二越机器人flexgui toolbox操作说明书.pdf VIP
- 智慧工厂-智慧工厂解决方案.docx VIP
- 高中化学解题方法归纳:和量法.doc VIP
- 译林牛津新版高中英语(必修1-3)单词表.pdf VIP
- 包装有限公司分切机安全风险分级清单.docx VIP
- 重庆市西南大学附属中学2025届高三下学期二诊模拟考试物理试卷 含解析.docx VIP
- 【高中英语】《星火英语同步词汇》抗遗忘速记手册.docx VIP
- 成都市锦江区2026届初三一诊(暨期末考试)数学试卷(含答案).docx
- 三坐标 培训教程.pptx VIP
原创力文档

文档评论(0)