X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/01111366c9b4ea40eee7f4b13ddfe6f6b9f886db..45b5751fb4013f2ab8db47c5fe4ac533ab324864:/samples/image/image.cpp diff --git a/samples/image/image.cpp b/samples/image/image.cpp index 997b1f9484..3546f1f1e6 100644 --- a/samples/image/image.cpp +++ b/samples/image/image.cpp @@ -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; } - - - -