X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6e13c1965f5fe259d4f9c6276cf90d2abe02c6cf..e87b7b6000ce8af6fe6284c8dededa2415ee13ce:/samples/image/image.cpp diff --git a/samples/image/image.cpp b/samples/image/image.cpp index ecb6b59ad9..7b17838bd5 100644 --- a/samples/image/image.cpp +++ b/samples/image/image.cpp @@ -80,10 +80,14 @@ BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) EVT_PAINT(MyCanvas::OnPaint) END_EVENT_TABLE() -MyCanvas::MyCanvas( wxWindow *parent, const wxWindowID id, +MyCanvas::MyCanvas( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size ) : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER ) { + my_horse = (wxBitmap*) NULL; + my_square = (wxBitmap*) NULL; + my_anti = (wxBitmap*) NULL; + SetBackgroundColour(* wxWHITE); wxBitmap bitmap( 100, 100 ); @@ -109,7 +113,7 @@ MyCanvas::MyCanvas( wxWindow *parent, const wxWindowID id, image.LoadFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG ); my_square = new wxBitmap( image.ConvertToBitmap() ); - + CreateAntiAliasedBitmap(); } @@ -124,28 +128,28 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) { wxPaintDC dc( this ); PrepareDC( dc ); - + dc.DrawText( "Loaded image", 30, 10 ); - if (my_square->Ok()) dc.DrawBitmap( *my_square, 30, 30 ); + if (my_square && my_square->Ok()) dc.DrawBitmap( *my_square, 30, 30 ); dc.DrawText( "Drawn directly", 150, 10 ); dc.SetBrush( wxBrush( "orange", wxSOLID ) ); dc.SetPen( *wxWHITE_PEN ); dc.DrawRectangle( 150, 30, 100, 100 ); - if (my_anti->Ok()) dc.DrawBitmap( *my_anti, 250, 140 ); + if (my_anti && my_anti->Ok()) dc.DrawBitmap( *my_anti, 250, 140 ); - if (my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 140 ); + if (my_horse && my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 140 ); } void MyCanvas::CreateAntiAliasedBitmap() { wxBitmap bitmap( 300, 300 ); + wxMemoryDC dc; + dc.SelectObject( bitmap ); - - dc.SetPen( *wxTRANSPARENT_PEN ); - + dc.Clear(); dc.SetFont( wxFont( 24, wxDECORATIVE, wxDEFAULT, wxDEFAULT ) ); @@ -158,7 +162,7 @@ void MyCanvas::CreateAntiAliasedBitmap() wxImage original( bitmap ); wxImage anti( 150, 150 ); - + /* This is quite slow, but safe. Use wxImage::GetData() for speed instead. */ for (int y = 1; y < 149; y++) @@ -237,8 +241,6 @@ void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) ) bool MyApp::OnInit() { - wxImage::AddHandler( new wxPNGHandler ); - wxFrame *frame = new MyFrame(); frame->Show( TRUE );