65.9K
CodeProject 正在变化。 阅读更多。
Home

CBufferDC:一个简单的 MFC 类,用于自动实现无闪烁绘图

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.68/5 (30投票s)

2007年5月3日

CPOL

1分钟阅读

viewsIcon

51158

downloadIcon

3631

OnPaint 绘图中使用 CPaintDC 的替代品。只需将 CPaintDC dc(this) 更改为 CBufferDC dc(this),就完成了。

Screenshot - shot.jpg

引言

在开发我的 HyperLink 控件时,我发现需要进行无闪烁的绘制,并想到创建一个简单的类,它可以自动完成此操作,并且只需进行最少的代码修改。因此,我编写了这个小类来实现这一目标。

Using the Code

只需像这样在你的 OnPaint 中替换设备描述符(DC)的声明

从这里

CPaintDC dc(this);

// Your drawing here

变为这样:

CBufferDC dc(this);

// Your drawing here

就完成了。如果在 OnPaint 中创建 CBufferDC 后,你调整了窗口大小,则必须记住使用新的客户端矩形调用 SetBoundsRect,并将 flags 参数设置为 DCB_DISABLE,如果你想避免 CDC 的默认行为。选择使用此方法而不是自定义方法的原因是,我希望我的类与 CPaintDC 兼容,以便人们可以简单地更改类名以达到目的,但可以安全地返回到 CPaintDC 而无需更改代码。

注释

演示中提供的代码(特别是 CBallBouncer 类)仅用于演示目的,显然编写得很糟糕且不可重用。但是,正如我所说,这只是一个演示,所以我编写得很快,以提供一个清晰地演示 CBufferDC 类功能(即避免闪烁)的演示,仅此而已。

结论

所以,这就是全部内容,我想。

© . All rights reserved.