void MyCanvas::DoPaint(wxDC& dc)
{
+ PrepareDC(dc);
+
if ( m_eraseBgInPaint )
{
dc.SetBackground(*wxLIGHT_GREY);
- dc.Clear();
+
+ // Erase the entire virtual area, not just the client area.
+ dc.SetPen(*wxTRANSPARENT_PEN);
+ dc.SetBrush(GetBackgroundColour());
+ dc.DrawRectangle(GetVirtualSize());
dc.DrawText("Background erased in OnPaint", 65, 110);
}
if ( m_useBuffer )
{
wxAutoBufferedPaintDC dc(this);
- PrepareDC(dc);
-
DoPaint(dc);
}
else
{
wxPaintDC dc(this);
- PrepareDC(dc);
-
DoPaint(dc);
}
}
wxDC& dc = *event.GetDC();
dc.SetPen(*wxGREEN_PEN);
- PrepareDC( dc );
-
// clear any junk currently displayed
dc.Clear();
- const wxSize size = GetClientSize();
+ PrepareDC( dc );
+
+ const wxSize size = GetVirtualSize();
for ( int x = 0; x < size.x; x += 15 )
{
dc.DrawLine(x, 0, x, size.y);