VS2012 GDI绘图双缓冲 去闪屏问题

本文介绍了如何使用CMemDC类在VS2012中实现GDI双缓冲绘图以解决闪屏问题,并探讨了MFC框架下APP、DOC和VIEW的角色及其相互作用。
部署运行你感兴趣的模型镜像

VS2012 GDI绘图双缓冲 去闪屏问题


CMemDC类

使用CMemDC类实现双缓冲是非常简单的


         CDC *pDC = GetDC();
	 CMemDC dcMem(*pDC,this);
	 CDC& dc = dcMem.GetDC();
	 HDC hdc = dc.m_hDC;
	 using namespace Gdiplus;
	 Graphics graphics(hdc);
	 graphics.SetSmoothingMode(SmoothingModeAntiAlias);
         graphics.Clear(Gdiplus::Color(255, 255, 255));
	 CchessboardDoc *pDoc = GetDocument();
         Pen newPen(pGroup->attr.c, pGroup->attr.width);
         //此处就可以利用graphics随便画图了
         //graphics.DrawLine(&newPen, pItem->point.x, pItem->point.y, (pItem->next->point.x), (pItem->next->point.y));

MFC中的APP/DOC/VIEW

MFC中这三者的关系,类似于MVC中的三个角色。 DOC类似于MODE,VIEW也相当于VIEW,APP与Controller的对应则没有那么明显;

需要注意的是
VIEW可以监听菜单、工具栏等消息或者事件,同时还可以监听windows事件,例如鼠标键盘之类,因为它是继承了CWND的。

而DOC和APP只能监听一般的消息事件,命令等,因为它是继承CCmdTarget的。

至此,以此为记录。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值