]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/image/image.cpp
Got Penguin sample running under Windows.
[wxWidgets.git] / samples / image / image.cpp
index 997b1f9484e1de6c2ebac254c86dfab1554f417a..3546f1f1e67ddb855ab9915f583301be3295a495 100644 (file)
@@ -7,7 +7,17 @@
  *
  */
 
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
 #include "wx/wx.h"
+#endif
+
 #include "wx/image.h"
 
 // derived classes
@@ -29,6 +39,7 @@ class MyCanvas: public wxScrolledWindow
     void OnPaint( wxPaintEvent &event );
     
     wxBitmap  *my_horse;
+    wxBitmap  *my_square;
     
   DECLARE_EVENT_TABLE()
 };
@@ -76,14 +87,37 @@ END_EVENT_TABLE()
 MyCanvas::MyCanvas( wxWindow *parent, const wxWindowID id, const wxPoint &pos, const wxSize &size ) 
   : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER ) 
 {
-  wxImage image;
-  image.LoadFile( "../horse.png", wxBITMAP_TYPE_PNG );
-  my_horse = new wxBitmap( image );
+  SetBackgroundColour(* wxWHITE);
+
+  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 );
+
+  wxString dir("");
+
+#ifdef __WXGTK__
+  dir = wxString("../");
+#endif
+
+  wxImage image( bitmap );
+  image.SaveFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG );
+  
+  image.LoadFile( dir + wxString("horse.png"), wxBITMAP_TYPE_PNG );
+  my_horse = new wxBitmap( image.ConvertToBitmap() );
+  
+  image.LoadFile( dir + wxString("test.png"), wxBITMAP_TYPE_PNG );
+  my_square = new wxBitmap( image.ConvertToBitmap() );
 }
 
 MyCanvas::~MyCanvas(void)
 {
   delete my_horse;
+  delete my_square;
 }
 
 void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
@@ -91,23 +125,32 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
   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
 
-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)
+  EVT_SIZE    (MyFrame::OnSize)
 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..");
@@ -115,11 +158,14 @@ MyFrame::MyFrame(void) :
   
   wxMenuBar *menu_bar = new wxMenuBar();
   menu_bar->Append(file_menu, "File");
-  menu_bar->Show( TRUE );
-  
+
   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 );
 }
 
@@ -130,7 +176,15 @@ void MyFrame::OnQuit( 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 );
+  if (m_canvas)
+    m_canvas->SetSize( w, h );
 }
 
 //-----------------------------------------------------------------------------
@@ -152,7 +206,3 @@ bool MyApp::OnInit(void)
   return TRUE;
 }
 
-
-
-
-