查看源代码 wxBufferedPaintDC (wx v2.4.3)
这是 wxBufferedDC
的一个子类,可以在 EVT\_PAINT()
事件处理程序中使用,以实现双缓冲绘图。
只需使用此类代替 wxPaintDC
,并确保在类初始化代码的某处调用 wxWindow:setBackgroundStyle/2
并使用 wxBG_STYLE_PAINT,这样你就可以(大部分)避免闪烁。唯一需要注意的是,如果你将此类与 wxScrolled
(在 wx 中未实现) 一起使用,你可能 不
希望在其上调用 wxScrolledWindow:prepareDC/2
,因为它已经为真正的底层 wxPaintDC
在内部执行此操作。
请参阅
此类派生自,并且可以使用以下类的函数:
wxWidgets 文档: wxBufferedPaintDC
概要
类型
-type wxBufferedPaintDC() :: wx:wx_object().
函数
-spec destroy(This :: wxBufferedPaintDC()) -> ok.
销毁对象
-spec new(Window) -> wxBufferedPaintDC() when Window :: wxWindow:wxWindow().
等同于 new(Window, [])
。
-spec new(Window, Buffer) -> wxBufferedPaintDC() when Window :: wxWindow:wxWindow(), Buffer :: wxBitmap:wxBitmap(); (Window, [Option]) -> wxBufferedPaintDC() when Window :: wxWindow:wxWindow(), Option :: {style, integer()}.
-spec new(Window, Buffer, [Option]) -> wxBufferedPaintDC() when Window :: wxWindow:wxWindow(), Buffer :: wxBitmap:wxBitmap(), Option :: {style, integer()}.
与 wxBufferedDC
一样,你可以提供用于缓冲的位图,也可以让此对象在内部创建一个位图(在后一种情况下,使用窗口客户端部分的大小)。
为 style
参数传递 wxBUFFER_CLIENT_AREA 表示仅缓冲窗口的客户区,或者传递 wxBUFFER_VIRTUAL_AREA 表示缓冲位图覆盖虚拟区域。