wxWidgets/interface/wx/dcmemory.h

111 lines
3.8 KiB
C
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////
// 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);
};