// ----------------------------------------------------------------------------
#ifdef __GNUG__
- #pragma implementation "minimal.cpp"
- #pragma interface "minimal.cpp"
+ #pragma implementation "erase.cpp"
+ #pragma interface "erase.cpp"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
// resources
// ----------------------------------------------------------------------------
// the application icon
-#if defined(__WXGTK__) || defined(__WXMOTIF__)
+#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__)
#include "mondrian.xpm"
#endif
void OnPaint( wxPaintEvent &event );
void OnEraseBackground( wxEraseEvent &event );
+
+ wxBitmap m_bitmap;
private:
DECLARE_EVENT_TABLE()
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxString msg;
- msg.Printf( _T("This is the about dialog of minimal sample.\n")
+ msg.Printf( _T("This is the about dialog of the Erase sample.\n")
_T("Welcome to %s"), wxVERSION_STRING);
- wxMessageBox(msg, "About Minimal", wxOK | wxICON_INFORMATION, this);
+ wxMessageBox(msg, "About Erase", wxOK | wxICON_INFORMATION, this);
}
MyCanvas::MyCanvas( MyFrame *parent )
: wxScrolledWindow( parent, -1, wxDefaultPosition, wxDefaultSize,
- wxScrolledWindowStyle|wxNO_FULL_REPAINT_ON_RESIZE )
+ wxScrolledWindowStyle|wxNO_FULL_REPAINT_ON_RESIZE|wxSUNKEN_BORDER )
{
SetScrollbars( 10, 10, 40, 100, 0, 0 );
+
+ m_bitmap = wxBitmap( mondrian_xpm );
+
+ new wxStaticBitmap( this, -1, m_bitmap, wxPoint(80,20) );
}
void MyCanvas::OnPaint( wxPaintEvent &event )
wxPaintDC dc(this);
PrepareDC( dc );
+ dc.SetBrush( *wxBLACK_BRUSH );
+ dc.DrawRectangle( 0,0,200,50 );
+
+ dc.DrawBitmap( m_bitmap, 10, 20, TRUE );
+
+#if 0
+ wxRegionIterator upd( GetUpdateRegion() );
+ while (upd)
+ {
+ wxLogDebug( "Paint: %d %d %d %d", upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() );
+ upd ++;
+ }
+#endif
+
+#if 0
+ wxSize size = GetSize();
+ wxSize client_size = GetClientSize();
+ wxLogDebug( "size %d %d client_size %d %d", size.x, size.y, client_size.x, client_size.y );
+#endif
+
+ int i;
+ dc.SetPen( *wxWHITE_PEN );
+ for (i = 0; i < 20; i += 2)
+ dc.DrawLine( i,i, i+100,i );
+
+ dc.SetPen( *wxWHITE_PEN );
+ for (i = 200; i < 220; i += 2)
+ dc.DrawLine( i-200,i, i-100,i );
+
+ wxRegion region( 110, 110, 80, 80 );
+ wxRegion hole( 130, 130, 40, 1 );
+ region.Intersect( hole );
+ dc.SetClippingRegion( region );
+
dc.SetBrush( *wxRED_BRUSH );
- dc.DrawRectangle( 100, 100, 300, 500 );
+ dc.DrawRectangle( 100, 100, 200, 200 );
+
+ dc.DestroyClippingRegion();
+
+ dc.SetPen( *wxTRANSPARENT_PEN );
+
+ wxRegion strip( 110, 200, 30, 1 );
+ wxRegionIterator it( strip );
+ while (it)
+ {
+ dc.DrawRectangle( it.GetX(), it.GetY(), it.GetWidth(), it.GetHeight() );
+ it ++;
+ }
}
void MyCanvas::OnEraseBackground( wxEraseEvent &event )