wx.ClientDC is primarily useful for obtaining information about the window from outside EVT_PAINT() handler.
Typical use of this class is to obtain the extent of some text string in order to allocate enough size for a window, e.g.
# Create the initially empty label with the size big enough to show
# the given string.
dc = wx.ClientDC(self)
text = wx.StaticText(
self,
size=dc.GetTextExtent("String of max length"),
style=wx.ST_NO_AUTORESIZE
)
wx.ClientDC objects should normally be constructed as temporary stack objects, i.e. don’t store a wx.ClientDC object.
A wx.ClientDC object is initialized to use the same font and colours as the window it is associated with.
Note
While wx.ClientDC may also be used for drawing on the client area of a window from outside an EVT_PAINT() handler in some ports, this does not work on all platforms (neither wxOSX nor wxGTK with GTK 3 Wayland backend support this, so drawing using wx.ClientDC simply doesn’t have any effect there) and the only portable way of drawing is via wx.PaintDC. To redraw a small part of the window, use wx.Window.RefreshRect
to invalidate just this part and check wx.Window.GetUpdateRegion
in the paint event handler to redraw this part only.
See also
wx.DC, wx.MemoryDC, wx.PaintDC, wx.WindowDC, wx.ScreenDC
Constructor. |