wx.DC是一个设备上下文,图形和文本可以绘制在其上。设备上下文旨在以通用的方式表示多种输出设备,并且始终使用相同的应用程序编程接口(API)。
一些设备上下文是为了在窗口上进行绘制而临时创建的。wx.ScreenDC、wx.ClientDC、wx.PaintDC和wx.WindowDC都是这种情况。以下内容介绍了这些设备上下文之间的区别,以及你应当在何时使用它们。
- wx.ScreenDC。使用它来在屏幕上进行绘制,而不是在单个窗口上绘制。
- wx.ClientDC。使用它来在窗口的客户区(即没有边框和其他装饰的部分)进行绘制,但不要在 wx.PaintEvent处理函数内部使用它。
- wx.PaintDC。使用它来在窗口的客户区进行绘制,但只能在wx.PaintEvent处理函数内部使用。
- wx.WindowDC。使用它来在窗口的整个区域(包括装饰部分)进行绘制。这在非Windows平台上可能不可用。
要使用客户端设备上下文、绘制设备上下文或窗口设备上下文,请在栈上创建一个以窗口作为参数的对象,例如:
def OnMyCmd(self, event):
dc = wx.ClientDC(window)
DrawMyPicture(dc)
尽量编写由wx.DC参数化的代码——如果你这样做了,通过传递不同的设备上下文,同一段代码就可以向许多不同的设备进行绘制操作。这并非对所有情况都适用(例如,并非所有设备上下文都支持位图绘制),但在大多数情况下是可行的。