VC中用GDI函数实规高速平滑动画(2)
在MemBitmap.cpp中实现代码如下:
//初始化位图类
void CMemBitmap::init(CWnd *pwnd)
{
RECT rt; //保存窗体客户区域的大小的矩形类型变量
pWnd = pwnd; //获取窗体指针
pwnd->GetClientRect(&rt); //得到窗体客户区域的大小
//利用窗体类的CDC指针在内存中创建位图
CreateCompatibleBitmap(pwnd->GetDC(), rt.right;, rt.bottom);
}
CreateCompatibleBitmap函数作用是初始化位图类,其原型如下:
BOOL CreateCompatibleBitmap( CDC* pDC, int nWidth, int nHeight );
pDC是设备环境指针,本例用窗体的设备环境指针。nWidth和nHeight是指定该位图尺寸的高度与宽度,单位为象素。
4、添加成员函数完成绘图功能。为了能在动画中显示文本信息,我们添加一个成员变更来显示文本信息。其原型的代码如下:
//MemBitmap.h文件中
public:
void TextOut(int x, int y, int iSize, LPCSTR strText,COLORREF color);
//MemBitmap.cpp文件中
void CMemBitmap::TextOut(int x, int y, int iSize, LPCSTR strText, COLORREF color)
{
CDC* pDC = pWnd->GetDC();//获取窗体的指针
CFont NewFont; //文本的字体对象
CFont *OldFont; //保存以前的字体指针
CDC dcMem ; //内存中的DC指针,以便调用GDI函数在位图中绘图
dcMem.CreateCompatibleDC(pDC); //创建与窗体设备环境一样大小DC
dcMem.SelectObject(this); //将内存中的DC选择该类的位图对象
NewFont.CreatePointFont(iSize,"宋体");//创建显示文本的字体
OldFont = dcMem.SelectObject(&NewFont); //选择新字体

