2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: dcmemory.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxMemoryDC
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
2010-07-13 09:29:13 -04:00
|
|
|
// Licence: wxWindows licence
|
2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxMemoryDC
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-04-19 04:12:58 -04:00
|
|
|
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.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{dc}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxBitmap, wxDC
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxMemoryDC : public wxDC
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2008-04-19 04:12:58 -04:00
|
|
|
Constructs a new memory device context.
|
|
|
|
|
2009-02-21 10:40:15 -05:00
|
|
|
Use the wxDC::IsOk() member to test whether the constructor was
|
2008-04-19 04:12:58 -04:00
|
|
|
successful in creating a usable device context. Don't forget to select
|
|
|
|
a bitmap into the DC before drawing on it.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
wxMemoryDC();
|
2009-07-16 08:06:54 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
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);
|
|
|
|
|
2008-04-19 04:12:58 -04:00
|
|
|
/**
|
|
|
|
Constructs a new memory device context and calls SelectObject() with
|
|
|
|
the given bitmap.
|
|
|
|
|
2009-02-21 10:40:15 -05:00
|
|
|
Use the wxDC::IsOk() member to test whether the constructor was
|
2008-04-19 04:12:58 -04:00
|
|
|
successful in creating a usable device context.
|
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
wxMemoryDC(wxBitmap& bitmap);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-04-19 04:12:58 -04:00
|
|
|
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.
|
|
|
|
|
2010-10-24 18:41:46 -04:00
|
|
|
Using SelectObjectAsSource() when modifying the bitmap may incur some
|
2008-04-19 04:12:58 -04:00
|
|
|
problems related to wxBitmap being a reference counted object (see
|
|
|
|
@ref overview_refcount).
|
|
|
|
|
2010-10-24 18:41:46 -04:00
|
|
|
Before using the updated bitmap data, make sure to select it out of
|
|
|
|
context first either by selecting ::wxNullBitmap into the device
|
|
|
|
context or destroying the device context entirely.
|
|
|
|
|
|
|
|
If the bitmap is already selected in this device context, nothing is
|
|
|
|
done. If it is selected in another context, the function asserts and
|
|
|
|
drawing on the bitmap won't work correctly.
|
2008-04-19 04:12:58 -04:00
|
|
|
|
|
|
|
@see wxDC::DrawBitmap()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
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
|
2008-04-19 04:12:58 -04:00
|
|
|
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()
|
2008-03-08 08:52:38 -05:00
|
|
|
easier to use instead.
|
2008-04-19 04:12:58 -04:00
|
|
|
|
2009-02-21 10:40:15 -05:00
|
|
|
If the argument is ::wxNullBitmap (or some other uninitialised wxBitmap)
|
2008-04-19 04:12:58 -04:00
|
|
|
the current bitmap is selected out of the device context, and the
|
|
|
|
original bitmap restored, allowing the current bitmap to be destroyed
|
|
|
|
safely.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SelectObjectAsSource(const wxBitmap& bitmap);
|
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|