4 * Author: Robert Roebling
6 * Copyright: (C) 1998, Robert Roebling
10 // For compilers that support precompilation, includes "wx/wx.h".
11 #include "wx/wxprec.h"
30 class MyCanvas
: public wxScrolledWindow
34 MyCanvas( wxWindow
*parent
, wxWindowID
, const wxPoint
&pos
, const wxSize
&size
);
36 void OnPaint( wxPaintEvent
&event
);
41 DECLARE_DYNAMIC_CLASS(MyCanvas
)
47 class MyFrame
: public wxFrame
52 void OnAbout( wxCommandEvent
&event
);
53 void OnQuit( wxCommandEvent
&event
);
57 DECLARE_DYNAMIC_CLASS(MyFrame
)
63 class MyApp
: public wxApp
66 virtual bool OnInit();
75 IMPLEMENT_DYNAMIC_CLASS(MyCanvas
, wxScrolledWindow
)
77 BEGIN_EVENT_TABLE(MyCanvas
, wxScrolledWindow
)
78 EVT_PAINT(MyCanvas
::OnPaint
)
81 MyCanvas
::MyCanvas( wxWindow
*parent
, const wxWindowID id
,
82 const wxPoint
&pos
, const wxSize
&size
)
83 : wxScrolledWindow( parent
, id
, pos
, size
, wxSUNKEN_BORDER
)
85 SetBackgroundColour(* wxWHITE
);
87 wxBitmap
bitmap( 100, 100 );
90 dc
.SelectObject( bitmap
);
91 dc
.SetBrush( wxBrush( "orange", wxSOLID
) );
92 dc
.SetPen( *wxWHITE_PEN
);
93 dc
.DrawRectangle( 0, 0, 100, 100 );
94 dc
.SelectObject( wxNullBitmap
);
99 dir
= wxString("../");
103 dir
= wxString("../");
107 wxImage
image( bitmap
);
108 image
.SaveFile( dir
+ wxString("test.png"), wxBITMAP_TYPE_PNG
);
113 image
.LoadFile( dir
+ wxString("horse.png"), wxBITMAP_TYPE_PNG
);
114 my_horse
= new wxBitmap( image
.ConvertToBitmap() );
117 image
.LoadFile( dir
+ wxString("test.png"), wxBITMAP_TYPE_PNG
);
118 my_square
= new wxBitmap( image
.ConvertToBitmap() );
122 MyCanvas
::~MyCanvas()
130 void MyCanvas
::OnPaint( wxPaintEvent
&WXUNUSED(event
) )
132 wxPaintDC
dc( this );
136 dc
.DrawText( "Loaded image", 30, 100 );
137 if (my_square
->Ok()) dc
.DrawBitmap( *my_square
, 30, 120 );
139 dc
.DrawText( "Drawn directly", 150, 100 );
140 dc
.SetBrush( wxBrush( "orange", wxSOLID
) );
141 dc
.SetPen( *wxWHITE_PEN
);
142 dc
.DrawRectangle( 150, 120, 100, 100 );
145 if (my_horse
->Ok()) dc
.DrawBitmap( *my_horse
, 30, 240 );
150 const int ID_QUIT
= 108;
151 const int ID_ABOUT
= 109;
153 IMPLEMENT_DYNAMIC_CLASS( MyFrame
, wxFrame
)
155 BEGIN_EVENT_TABLE(MyFrame
,wxFrame
)
156 EVT_MENU (ID_ABOUT
, MyFrame
::OnAbout
)
157 EVT_MENU (ID_QUIT
, MyFrame
::OnQuit
)
161 : wxFrame( (wxFrame
*)NULL
, -1, "wxImage sample",
162 wxPoint(20,20), wxSize(470,360) )
164 wxMenu
*file_menu
= new wxMenu();
165 file_menu
->Append( ID_ABOUT
, "About..");
166 file_menu
->Append( ID_QUIT
, "Exit");
168 wxMenuBar
*menu_bar
= new wxMenuBar();
169 menu_bar
->Append(file_menu
, "File");
171 SetMenuBar( menu_bar
);
174 int widths
[] = { -1, 100 };
175 SetStatusWidths( 2, widths
);
177 m_canvas
= new MyCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
178 m_canvas
->SetScrollbars( 10, 10, 50, 50 );
181 void MyFrame
::OnQuit( wxCommandEvent
&WXUNUSED(event
) )
186 void MyFrame
::OnAbout( wxCommandEvent
&WXUNUSED(event
) )
188 (void)wxMessageBox( "wxImage demo\n"
189 "Robert Roebling (c) 1998",
190 "About wxImage Demo", wxICON_INFORMATION
| wxOK
);
193 //-----------------------------------------------------------------------------
195 //-----------------------------------------------------------------------------
199 wxImage
::AddHandler( new wxPNGHandler
);
201 wxFrame
*frame
= new MyFrame();