wxPaintDC

From WxWiki
Jump to: navigation, search
Official Classes SmallBlocks.png Archive Containers Controls Data Structures Database Date & Time Debug Device Contexts Dialogs Document & Views Drag & Drop Events Filesystem Frames Graphics Grid Cell Help HTML Logging Miscellaneous Networking Printing Sizers Streams Threading Windows

A wxPaintDC must be constructed if an application wishes to paint on the client area of a window from within an EVT_PAINT() event handler.

This should normally be constructed as a temporary stack object; don't store a wxPaintDC object. If you have an EVT_PAINT() handler, you must create a wxPaintDC object within it even if you don't actually use it.

Using wxPaintDC within your EVT_PAINT() handler is important because it automatically sets the clipping area to the damaged area of the window. Attempts to draw outside this area do not appear.

To draw on a window from outside your EVT_PAINT() handler, construct a wxClientDC object.

To draw on the whole window including decorations, construct a wxWindowDC object (Windows only).

A wxPaintDC object is initialized to use the same font and colours as the window it is associated with.

You may experience flickering in Scrolled Windows if, during the OnPaint/OnDraw, you select Bitmaps in a MemoryDC. (For example, at each call of OnPaint, you may want to create a MemoryDC, select an existing bitmap in it, and blit to the Scrolled Window DC.) To avoid this, you've got to create your Memory DC out of the onPaint/onDraw 'loop', just once.

See Also