///////////////////////////////////////////////////////////////////////////// // Name: dcmemory.h // Purpose: interface of wxMemoryDC // Author: wxWidgets team // RCS-ID: $Id$ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @class wxMemoryDC A memory device context provides a means to draw graphics onto a bitmap. When drawing in to a mono-bitmap, using @c wxWHITE, @c wxWHITE_PEN and @c wxWHITE_BRUSH will draw the background colour (i.e. 0) whereas all other colours will draw the foreground colour (i.e. 1). A bitmap must be selected into the new memory DC before it may be used for anything. Typical usage is as follows: @code // Create a memory DC wxMemoryDC temp_dc; temp_dc.SelectObject(test_bitmap); // We can now draw into the memory DC... // Copy from this DC to another DC. old_dc.Blit(250, 50, BITMAP_WIDTH, BITMAP_HEIGHT, temp_dc, 0, 0); @endcode Note that the memory DC must be deleted (or the bitmap selected out of it) before a bitmap can be reselected into another memory DC. And, before performing any other operations on the bitmap data, the bitmap must be selected out of the memory DC: @code temp_dc.SelectObject(wxNullBitmap); @endcode This happens automatically when wxMemoryDC object goes out of scope. @library{wxcore} @category{dc} @see wxBitmap, wxDC */ class wxMemoryDC : public wxDC { public: /** Constructs a new memory device context. Use the wxDC::IsOk() member to test whether the constructor was successful in creating a usable device context. Don't forget to select a bitmap into the DC before drawing on it. */ wxMemoryDC(); /** Constructs a new memory device context having the same characteristics as the given existing device context. This constructor creates a memory device context @e compatible with @a dc in wxMSW, the argument is ignored in the other ports. If @a dc is @NULL, a device context compatible with the screen is created, just as with the default constructor. */ wxMemoryDC(wxDC *dc); /** Constructs a new memory device context and calls SelectObject() with the given bitmap. Use the wxDC::IsOk() member to test whether the constructor was successful in creating a usable device context. */ wxMemoryDC(wxBitmap& bitmap); /** Works exactly like SelectObjectAsSource() but this is the function you should use when you select a bitmap because you want to modify it, e.g. drawing on this DC. Using SelectObjectAsSource() when modifying the bitmap may incurr some problems related to wxBitmap being a reference counted object (see @ref overview_refcount). Also, before using the updated bitmap data, make sure to select it out of context first (for example by selecting ::wxNullBitmap into the device context). @see wxDC::DrawBitmap() */ void SelectObject(wxBitmap& bitmap); /** Selects the given bitmap into the device context, to use as the memory bitmap. Selecting the bitmap into a memory DC allows you to draw into the DC (and therefore the bitmap) and also to use wxDC::Blit() to copy the bitmap to a window. For this purpose, you may find wxDC::DrawIcon() easier to use instead. If the argument is ::wxNullBitmap (or some other uninitialised wxBitmap) the current bitmap is selected out of the device context, and the original bitmap restored, allowing the current bitmap to be destroyed safely. */ void SelectObjectAsSource(const wxBitmap& bitmap); };