]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/image/image.cpp
corrected (?) wxStringList::Delete()
[wxWidgets.git] / samples / image / image.cpp
index 997b1f9484e1de6c2ebac254c86dfab1554f417a..4e5146080765cc598395abcd8947c0bd2c1e11dd 100644 (file)
@@ -29,6 +29,7 @@ class MyCanvas: public wxScrolledWindow
     void OnPaint( wxPaintEvent &event );
     
     wxBitmap  *my_horse;
     void OnPaint( wxPaintEvent &event );
     
     wxBitmap  *my_horse;
+    wxBitmap  *my_square;
     
   DECLARE_EVENT_TABLE()
 };
     
   DECLARE_EVENT_TABLE()
 };
@@ -77,13 +78,30 @@ MyCanvas::MyCanvas( wxWindow *parent, const wxWindowID id, const wxPoint &pos, c
   : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER ) 
 {
   wxImage image;
   : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER ) 
 {
   wxImage image;
+
+  wxBitmap bitmap( 100, 100 );
+  
+  wxMemoryDC dc;
+  dc.SelectObject( bitmap );
+  dc.SetBrush( wxBrush( "orange", wxSOLID ) );
+  dc.SetPen( *wxWHITE_PEN );
+  dc.DrawRectangle( 0, 0, 100, 100 );
+  dc.SelectObject( wxNullBitmap );
+  
+  image = bitmap.ConvertToImage();
+  image.SaveFile( "../test.png", wxBITMAP_TYPE_PNG );
+  
   image.LoadFile( "../horse.png", wxBITMAP_TYPE_PNG );
   my_horse = new wxBitmap( image );
   image.LoadFile( "../horse.png", wxBITMAP_TYPE_PNG );
   my_horse = new wxBitmap( image );
+  
+  image.LoadFile( "../test.png", wxBITMAP_TYPE_PNG );
+  my_square = new wxBitmap( image );
 }
 
 MyCanvas::~MyCanvas(void)
 {
   delete my_horse;
 }
 
 MyCanvas::~MyCanvas(void)
 {
   delete my_horse;
+  delete my_square;
 }
 
 void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
 }
 
 void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
@@ -91,23 +109,32 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
   wxPaintDC dc( this );
   PrepareDC( dc );
 
   wxPaintDC dc( this );
   PrepareDC( dc );
 
-  dc.DrawBitmap( *my_horse, 30, 120 );
+  dc.DrawText( "Loaded image", 30, 100 );
+  if (my_square->Ok()) dc.DrawBitmap( *my_square, 30, 120 );
+  
+  dc.DrawText( "Drawn directly", 150, 100 );
+  dc.SetBrush( wxBrush( "orange", wxSOLID ) );
+  dc.SetPen( *wxWHITE_PEN );
+  dc.DrawRectangle( 150, 120, 100, 100 );
+  
+  if (my_horse->Ok()) dc.DrawBitmap( *my_horse, 30, 240 );
 }
 
 // MyFrame
 
 }
 
 // MyFrame
 
-const  ID_QUIT  = 108;
-const  ID_ABOUT = 109;
+const int ID_QUIT  = 108;
+const int ID_ABOUT = 109;
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
 BEGIN_EVENT_TABLE(MyFrame,wxFrame)
   EVT_MENU    (ID_ABOUT, MyFrame::OnAbout)
   EVT_MENU    (ID_QUIT,  MyFrame::OnQuit)
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
 BEGIN_EVENT_TABLE(MyFrame,wxFrame)
   EVT_MENU    (ID_ABOUT, MyFrame::OnAbout)
   EVT_MENU    (ID_QUIT,  MyFrame::OnQuit)
+  EVT_SIZE    (MyFrame::OnSize)
 END_EVENT_TABLE()
 
 MyFrame::MyFrame(void) :
 END_EVENT_TABLE()
 
 MyFrame::MyFrame(void) :
-  wxFrame( (wxFrame *) NULL, -1, (char *) "Robert's Test application", wxPoint(20,20), wxSize(470,360) )
+  wxFrame( (wxFrame *) NULL, -1, "wxImage sample", wxPoint(20,20), wxSize(470,360) )
 {
   wxMenu *file_menu = new wxMenu();
   file_menu->Append( ID_ABOUT, "About..");
 {
   wxMenu *file_menu = new wxMenu();
   file_menu->Append( ID_ABOUT, "About..");
@@ -119,7 +146,11 @@ MyFrame::MyFrame(void) :
   
   SetMenuBar( menu_bar );
   
   
   SetMenuBar( menu_bar );
   
-  m_canvas = new MyCanvas( this, -1, wxPoint(2,62), wxSize(300-4,120-4) );
+  CreateStatusBar(2);
+  int widths[] = { -1, 100 };
+  SetStatusWidths( 2, widths );
+  
+  m_canvas = new MyCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
   m_canvas->SetScrollbars( 10, 10, 50, 50 );
 }
 
   m_canvas->SetScrollbars( 10, 10, 50, 50 );
 }
 
@@ -130,7 +161,14 @@ void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
 
 void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 {
 
 void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 {
-  (void) wxMessageBox( "Image demo\nRobert Roebling (c) 1998", "About Image Demo", wxOK );
+  (void) wxMessageBox( "wxImage demo\nRobert Roebling (c) 1998", "About wxImage Demo", wxOK );
+}
+
+void MyFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
+{
+  int w,h;
+  GetClientSize( &w, &h );
+  m_canvas->SetSize( w, h );
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------