.. include:: headings.inc .. _MemoryDC: ========================================================================================================================================== |phoenix_title| **MemoryDC** ========================================================================================================================================== A memory device context provides a means to draw graphics onto a bitmap. When drawing in to a mono-bitmap, using ``WHITE`` , ``WHITE_PEN`` and ``WHITE_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: :: # Create a memory DC temp_dc = wx.MemoryDC() 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) 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: :: temp_dc.SelectObject(wx.NullBitmap) This happens automatically when :ref:`MemoryDC` object goes out of scope. .. seealso:: :ref:`Bitmap`, :ref:`DC` | |class_hierarchy| Inheritance Diagram ===================================== Inheritance diagram for class **MemoryDC** .. raw:: html
| |sub_classes| Known Subclasses ============================== :ref:`BufferedDC` | |method_summary| Methods Summary ================================ ================================================================================ ================================================================================ :meth:`~MemoryDC.__init__` Constructs a new memory device context. :meth:`~MemoryDC.SelectObject` Works exactly like :meth:`SelectObjectAsSource` but this is the function you should use when you select a bitmap because you want to modify it, e.g. :meth:`~MemoryDC.SelectObjectAsSource` Selects the given bitmap into the device context, to use as the memory bitmap. ================================================================================ ================================================================================ | |api| Class API =============== .. class:: MemoryDC(DC) A memory device context provides a means to draw graphics onto a bitmap. **Possible constructors**:: MemoryDC() MemoryDC(dc) MemoryDC(bitmap) .. method:: __init__(self, *args, **kw) |overload| **Overloaded Implementations**: **~~~** **__init__** `(self)` Constructs a new memory device context. Use the :meth:`DC.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. **~~~** **__init__** `(self, dc)` Constructs a new memory device context having the same characteristics as the given existing device context. This constructor creates a memory device context `compatible` with `dc` in wxMSW, the argument is ignored in the other ports. If `dc` is ``None``, a device context compatible with the screen is created, just as with the default constructor. :param `dc`: :type `dc`: DC **~~~** **__init__** `(self, bitmap)` Constructs a new memory device context and calls :meth:`SelectObject` with the given bitmap. Use the :meth:`DC.IsOk` member to test whether the constructor was successful in creating a usable device context. :param `bitmap`: :type `bitmap`: Bitmap **~~~** .. method:: SelectObject(self, bitmap) Works exactly like :meth:`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 :meth:`SelectObjectAsSource` when modifying the bitmap may incur some problems related to :ref:`Bitmap` being a reference counted object (see :ref:`Reference Counting