Restored old wxBufferedDC functionality until it can be decided how to
correct the current issues without making things worse. Updated docs. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
5c45e86bac
commit
7775e41fd7
@ -12,8 +12,8 @@
|
||||
\section{\class{wxBufferedDC}}\label{wxbuffereddc}
|
||||
|
||||
This simple class provides a simple way to avoid flicker: when drawing on it,
|
||||
everything is in fact drawn on an in-memory buffer (a
|
||||
\helpref{wxBitmap}{wxbitmap}) and copied to the screen only once, when this
|
||||
everything is in fact first drawn on an in-memory buffer (a
|
||||
\helpref{wxBitmap}{wxbitmap}) and then copied to the screen only once, when this
|
||||
object is destroyed.
|
||||
|
||||
It can be used in the same way as any other device context. wxBufferedDC itself
|
||||
@ -42,7 +42,7 @@ your \texttt{OnPaint()} handler, you should look at
|
||||
|
||||
\func{}{wxBufferedDC}{\void}
|
||||
|
||||
\func{}{wxBufferedDC}{\param{wxDC *}{dc}, \param{const wxSize\& }{area}, \param{int }{flags}}
|
||||
\func{}{wxBufferedDC}{\param{wxDC *}{dc}, \param{const wxSize\& }{area}}
|
||||
|
||||
\func{}{wxBufferedDC}{\param{wxDC *}{dc}, \param{const wxBitmap\& }{buffer}}
|
||||
|
||||
@ -55,16 +55,12 @@ must not be called after using them.
|
||||
\wxheading{Parameters}
|
||||
|
||||
\docparam{dc}{The underlying DC: everything drawn to this object will be
|
||||
flushed to this DC when this object is destroyed.}
|
||||
flushed to this DC when this object is destroyed. You may pass NULL
|
||||
in order to just initialize the buffer, and not flush it.}
|
||||
|
||||
\docparam{area}{The size of the bitmap to be used for buffering (this bitmap is
|
||||
created internally when it is not given explicitely).}
|
||||
|
||||
\docparam{flags}{Can currently only include the flag
|
||||
\texttt{wxBUFFER\_DC\_PRESERVE\_BG} which means that the existing background
|
||||
of \arg{dc} must be copied to this object before doing anything else, otherwise
|
||||
the background is overwritten (which is more efficient).}
|
||||
|
||||
\docparam{buffer}{Explicitly provided bitmap to be used for buffering: this is
|
||||
the most efficient solution as the bitmap doesn't have to be recreated each
|
||||
time but it also requires more memory as the bitmap is never freed. The bitmap
|
||||
@ -73,7 +69,7 @@ should have appropriate size, anything drawn outside of its bounds is clipped.}
|
||||
|
||||
\membersection{wxBufferedDC::Init}\label{wxbuffereddcinit}
|
||||
|
||||
\func{void}{Init}{\param{wxDC *}{dc}, \param{const wxSize\& }{area}, \param{int }{flags}}
|
||||
\func{void}{Init}{\param{wxDC *}{dc}, \param{const wxSize\& }{area}}
|
||||
|
||||
\func{void}{Init}{\param{wxDC *}{dc}, \param{const wxBitmap\& }{buffer}}
|
||||
|
||||
@ -87,7 +83,7 @@ Please see \helpref{constructors documentation}{wxbuffereddcctor} for details.
|
||||
\membersection{wxBufferedDC::\destruct{wxBufferedDC}}\label{wxbuffereddcdtor}
|
||||
|
||||
Copies everything drawn on the DC so far to the underlying DC associated with
|
||||
this object.
|
||||
this object, if any.
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -95,7 +91,7 @@ this object.
|
||||
\section{\class{wxBufferedPaintDC}}\label{wxbufferedpaintdc}
|
||||
|
||||
This is a subclass of \helpref{wxBufferedDC}{wxbuffereddc} which can be used
|
||||
inside \texttt{OnPaint()} handler. Just create an object of this class instead
|
||||
inside of an \texttt{OnPaint()} event handler. Just create an object of this class instead
|
||||
of \helpref{wxPaintDC}{wxpaintdc} and that's all you have to do to (mostly)
|
||||
avoid flicker. The only thing to watch out for is that if you are using this
|
||||
class together with \helpref{wxScrolledWindow}{wxscrolledwindow}, you probably
|
||||
@ -117,9 +113,7 @@ already does this internally for the real underlying wxPaintDC.
|
||||
|
||||
\membersection{wxBufferedPaintDC::wxBufferedPaintDC}\label{wxbufferedpaintdcctor}
|
||||
|
||||
\func{}{wxBufferedPaintDC}{\param{wxWindow *}{window}, \param{int }{flags}}
|
||||
|
||||
\func{}{wxBufferedPaintDC}{\param{wxWindow *}{window}, \param{const wxBitmap\& }{buffer}}
|
||||
\func{}{wxBufferedPaintDC}{\param{wxWindow *}{window}, \param{const wxBitmap\& }{buffer = wxNullBitmap}}
|
||||
|
||||
As with \helpref{wxBufferedDC}{wxbuffereddcctor}, you may either provide the
|
||||
bitmap to be used for buffering or let this object create one internally (in
|
||||
@ -129,6 +123,6 @@ the latter case, the size of the client part of the window is used).
|
||||
\membersection{wxBufferedPaintDC::\destruct{wxBufferedPaintDC}}\label{wxbufferedpaintdcdtor}
|
||||
|
||||
Copies everything drawn on the DC so far to the window associated with this
|
||||
object.
|
||||
object, using a \helpref{wxPaintDC}{wxpaintdc}.
|
||||
|
||||
|
||||
|
@ -81,9 +81,9 @@ public:
|
||||
wxASSERT_MSG( m_dc != 0,
|
||||
_T("No underlying DC associated with wxBufferedDC (anymore)") );
|
||||
|
||||
m_dc->Blit( m_dc->DeviceToLogicalX(0), m_dc->DeviceToLogicalY(0),
|
||||
m_dc->Blit( 0, 0,
|
||||
m_buffer.GetWidth(), m_buffer.GetHeight(), this,
|
||||
DeviceToLogicalX(0), DeviceToLogicalY(0) );
|
||||
0, 0 );
|
||||
m_dc = NULL;
|
||||
}
|
||||
|
||||
@ -123,6 +123,8 @@ public:
|
||||
wxBufferedPaintDC(wxWindow *window, const wxBitmap& buffer = wxNullBitmap)
|
||||
: m_paintdc(window)
|
||||
{
|
||||
window->PrepareDC( m_paintdc );
|
||||
|
||||
if( buffer != wxNullBitmap )
|
||||
Init(&m_paintdc, buffer);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user