6、添加了绘图函数,下面再介绍如何使用CMemBitmap类,来实现动画效果:首先,我们在视图类(也可以是其它窗口类)中声明一个CMemBitmap成员变量m_MemBitmap,代码如下:private: CMemBitmap m_MemBitmap;然后,我们重载Cview类函数OnInitialUpdate(),以便视图初始化结束后初始化位图对象,并且视图指针传递过去,其实现代码如下:void CTestBitmapView::OnInitialUpdate() { CView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class m_MemBitmap.init(this); SetTimer(1,100,NULL); } 在函数最后,启动了一个定时器, 我们将用定时来实现动画功能。接着,我们重载定时器消息函数OnTimer实现动画功能。其实现代码如下:
BOOL CNetwView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
return TRUE;
//return CView::OnEraseBkgnd(pDC);
}
在建立一个内存CDC和一个位图,在内存CDC上画好图以后,在显示到设备上就不会有闪烁
否则不会解决闪烁!
VC中用GDI函数实规高速平滑动画 摘要:许多游戏软件的开发中,实现高速平滑的动画需要许多比较深的技术,如:OpenGL、DirectX,并且可能还要开发人员有深厚的数学功底。但是,我们在开发一些小游戏,或为应用程序的界面实现一些动画效果,就可能不用以上这些技术了,我们更多的是用Windows API提供或MFC封装后的GDI绘图函数来实现。为此我们可不可以用GDI来实现高速平滑的动画呢?答案是肯定的。本文教您如何用GDI函数来开发平滑无闪的动画,并以一个应用实例来介绍这些用法。 关键词:GDI,MFC,Bitmap,内存设备环境一、动画原理。大家都知道播放电影的原理:在规定时间(一般为1秒)播放24幅连续的画面,由于人的视觉暂留,所以人们在观看电影时,看到的就不是一幅一幅的画面,而是丰富精彩的场景。于是,我们也模仿电影播放原理来用在编程中实现平滑无闪的动画。其实,这个原理已经在当今动画技术中实现,但我们讨论的是在VC++中用GDI函数实现同样效果的技术。我已采用此技术开发了一款纸牌游戏:“扑克麻将”。读者可到http://www.csdn.net/程序员大本营上下载,软件代号:9175。“扑克麻将”中使用的动画技术全部系文本介绍,从游戏中读者可看到:不论是发牌,出牌,选牌,吃牌等各种操作,游戏画面看不到一丝闪动,速动也极快。