mfc 绘图 保存 array

mfc 绘图 保存 array,第1张

双缓冲图形刷新的实现步骤

1、创建与窗口猛拍蚂设备描述表(前端缓冲区)兼容的内存设备描述表(后端缓冲区)

2、创建与内存设备描述表相兼容的位图并将该位图选入内存设备描述表中(没有位图的设备描述表是不能绘图的)

3、将图形绘制在内存设备描述表中

4、将内存设备描述表中的内容拷贝到窗口设备描述表

5、释放设备描述表句柄、位图等资源

示例:

01.void OnDraw(CDC *pDC)

02.{

03.//定义一个内存设备描述表对象(即后备缓冲区)

04.CDC MemDC

05.//定义一个位图对象

06.CBitmap MemBitmap

07.//建立与屏幕设备描述表(前端缓冲区)兼容的内存设备描述表句柄(后备缓冲区)

08.MemDC.CreateCompatibleDC(NULL)

09.//这时还不能绘图,因为没有位图的设备描述表是不能绘图的

10.//下面建立一个与屏幕设备描述表(或者内存设备描述表)兼容的位图

11.MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight)

12.//将位图选入到内存设备描述表

13.//只有选入了位图的设备描述表才有地方绘图,画到指定的位图上

14.CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap)

15.//先用背景色将位图清除干净,这里我贺伏用的是白色枝埋作为背景

16.//你也可以用自己应该用的颜色

17.MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255))

18.//绘图

19.MemDC.MoveTo(……)

20.MemDC.LineTo(……)

21.//将后备缓冲区中的图形拷贝到前端缓冲区

22.pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY)

23.//绘图完成后的清理

24.MemBitmap.DeleteObject()

25.MemDC.DeleteDC()

26.}

选择一个核心正盯数据结构,它不受滚动条的影响,只记录滚动的xy(其实mfc已经记录了,getscrollpos?)每次更新的时候升改再加上滚动的xy(或者举笑和改变窗口坐标原点之类的)滚动并不会影响核心数据保存只要保存核心的数据结构


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12410782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存