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






4.68/5 (30投票s)
在 OnPaint
绘图中使用 CPaintDC
的替代品。只需将 CPaintDC dc(this)
更改为 CBufferDC dc(this)
,就完成了。
引言
在开发我的 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
类功能(即避免闪烁)的演示,仅此而已。
结论
所以,这就是全部内容,我想。