在网上我们会搜到许多有关双缓冲的文章,但是大部分讲的并不是很明白,所以今天我就有条理的分享一下我的双缓冲技术的历程。
关于如何配置GDI+环境在网上很多并且配置也很简单,我就不多说了,我们直接进入正题。
1.首先,我们在void C***View::OnPaint()中配置OnPaint()函数。步骤如下:在类视图中找到C***View,然后右键选择属性在属性中会有一个消息按钮。

在这个消息列表中找到OnPaint点击添加就完成了对OnPaint()函数的配置。
2.在void C***View::OnPaint()函数中添加代码。我主要将框架代码给大家具体要实现的功能需要自己添加。
CRect rect;
GetClientRect(&rect);
Bitmap bmp(rect.right,rect.bottom);
Graphics *CacheGraphics = Graphics::FromImage(&bmp); //创建一个与bitmap关联的Graphics对象
CacheGraphics->Clear(Color::White); //将背景色刷新为白色
******//这里是用来添加实现自己功能的地方
Graphics graphics01(dc.m_hDC); //创建一个和hdc相关联的Graphics的对象
graphics01.DrawImage(&bmp, rect.left, rect.top, rect.right, rect.bottom); //将bitmap中的图像显示到屏幕上
3.完成这些之后还有一个地方需要注意,直接给出代码。
BOOL CTankView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//return CView::OnEraseBkgnd

本文详细介绍了如何在VS环境下利用GDI+实现双缓冲技术,从OnPaint()函数配置到关键代码实现,再到注意事项,包括避免在OnEraseBkgnd()中使用默认行为,确保双缓冲的正确实现。

418

被折叠的 条评论
为什么被折叠?



