*
*/
+// 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
void OnPaint( wxPaintEvent &event );
wxBitmap *my_horse;
+ wxBitmap *my_square;
DECLARE_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) )
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..");
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 );
}
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 );
}
//-----------------------------------------------------------------------------
return TRUE;
}
-
-
-
-