MFC 基于对话框的双缓存绘图

本文介绍了如何在MFC基于对话框的应用中实现双缓存绘图,通过在dlg类中添加相关定义,利用WM_TIMER消息启动定时器,并在OnTimer函数中进行绘图操作,有效提升了绘图性能。同时,添加了按钮和静态文本框来辅助展示绘图过程。
摘要由CSDN通过智能技术生成

 

1.在dlg类中添加如下定义

HWND m_hWnd;
CRect m_rect;
HDC hdc;
CDC* pDC;
CRect rectClient;
float num;//用于计数,初始化为零

2.添加WM_TIMER消息。添加按钮1,在其响应函数中开启时钟。添加静态文本框用于计时(num)

 

3.在OnTimer函数中,代码如下

SetDlgItemInt(IDC_STATIC,num,1);	
GetClientRect(&m_rect);//创建设备描述表
hdc=::GetDC(m_hWnd);//获得窗口的设备描述表
//pDC=GetDC();
int a=500,b=500,c=1000,d=600;
a=200;
b=100;
GetClientRect(rectClient);
CBitmap MemBitmap;
CDC MemDC;	
pDC=GetDC();
MemDC.CreateCompatibleDC(pDC);//创建与目标DC相兼容的内存DC---MemDC
MemBitmap.CreateCompatibleBitmap(pDC,m_rect.Width(),m_rect.Height());//根据目标DC创建位图
MemDC.SelectObject(&MemBitmap);//把位图选入内存DC

MemDC.SetMapMode(MM_ANISOTROPIC);
MemDC.SetWindowOrg(a,b);//设置原点
MemDC.SetWindowExt(c,d);//设定窗口尺寸,即绘图区的大小
MemDC.SetViewportExt(rectClient.right,rectClient.bottom);
MemDC.SetViewportOrg(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值