Added wxCanvasLine, Freeze() and Thaw() and mouse events (untested)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2000-09-02 18:01:32 +00:00
parent 3e1c4e0021
commit 239c1f50b0
3 changed files with 294 additions and 41 deletions

View File

@@ -20,6 +20,8 @@
#include <wx/image.h>
#include <wx/file.h>
#include <wx/timer.h>
#include <wx/log.h>
#include "smile.xpm"
@@ -43,10 +45,13 @@ public:
void OnQuit( wxCommandEvent &event );
void OnTimer( wxTimerEvent &event );
wxCanvas *m_canvas;
wxCanvasObject *m_sm1;
wxCanvasObject *m_sm2;
wxTimer *m_timer;
wxCanvas *m_canvas;
wxCanvasObject *m_sm1;
wxCanvasObject *m_sm2;
wxCanvasObject *m_sm3;
wxCanvasObject *m_sm4;
wxTimer *m_timer;
wxTextCtrl *m_log;
private:
DECLARE_DYNAMIC_CLASS(MyFrame)
@@ -85,51 +90,76 @@ END_EVENT_TABLE()
MyFrame::MyFrame()
: wxFrame( (wxFrame *)NULL, -1, "wxCanvas sample",
wxPoint(20,20), wxSize(470,360) )
wxPoint(20,20), wxSize(470,460) )
{
wxMenu *file_menu = new wxMenu();
file_menu->Append( ID_ABOUT, "&About...");
file_menu->AppendSeparator();
file_menu->Append( ID_QUIT, "E&xit");
wxMenu *file_menu = new wxMenu();
file_menu->Append( ID_ABOUT, "&About...");
file_menu->AppendSeparator();
file_menu->Append( ID_QUIT, "E&xit");
wxMenuBar *menu_bar = new wxMenuBar();
menu_bar->Append(file_menu, "&File");
wxMenuBar *menu_bar = new wxMenuBar();
menu_bar->Append(file_menu, "&File");
SetMenuBar( menu_bar );
SetMenuBar( menu_bar );
CreateStatusBar(2);
int widths[] = { -1, 100 };
SetStatusWidths( 2, widths );
CreateStatusBar(2);
int widths[] = { -1, 100 };
SetStatusWidths( 2, widths );
m_canvas = new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
m_canvas = new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
m_canvas->Freeze();
m_canvas->SetArea( 400, 600 );
m_canvas->SetColour( 255, 255, 255 );
m_canvas->SetArea( 400, 600 );
m_canvas->SetColour( 255, 255, 255 );
wxBitmap bitmap( smile_xpm );
wxImage image( bitmap );
wxBitmap bitmap( smile_xpm );
wxImage image( bitmap );
m_sm1 = new wxCanvasImage( image, 0, 70 );
m_canvas->Append( m_sm1 );
m_sm1 = new wxCanvasImage( image, 0, 70 );
m_canvas->Append( m_sm1 );
int i;
for (i = 10; i < 300; i+=10)
m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
int i;
for (i = 10; i < 300; i+=10)
m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
m_sm2 = new wxCanvasImage( image, 0, 140 );
m_canvas->Append( m_sm2 );
m_sm2 = new wxCanvasImage( image, 0, 140 );
m_canvas->Append( m_sm2 );
for (i = 15; i < 300; i+=10)
m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
for (i = 15; i < 300; i+=10)
m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
wxButton *button = new wxButton( m_canvas, -1, "Hello", wxPoint(80,50) );
m_canvas->Append( new wxCanvasControl( button ) );
wxButton *button = new wxButton( m_canvas, -1, "Hello", wxPoint(80,50) );
m_canvas->Append( new wxCanvasControl( button ) );
m_canvas->Append( new wxCanvasText( "Hello", 180, 50,
wxGetApp().GetFontPath() + "/times.ttf", 20 ) );
m_canvas->Append( new wxCanvasText( "Hello", 180, 50,
wxGetApp().GetFontPath() + "/times.ttf", 20 ) );
m_timer = new wxTimer( this );
m_timer->Start( 100, FALSE );
m_sm3 = new wxCanvasImage( image, 0, 210 );
m_canvas->Append( m_sm3 );
for (i = 10; i < 300; i+=10)
m_canvas->Append( new wxCanvasLine( 10,150,i,200, 0,255,0 ) );
m_sm4 = new wxCanvasImage( image, 0, 270 );
m_canvas->Append( m_sm4 );
m_canvas->Thaw();
m_log = new wxTextCtrl( this, -1, "", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
delete old_log;
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
topsizer->Add( m_canvas, 1, wxEXPAND );
topsizer->Add( m_log, 0, wxEXPAND );
SetAutoLayout( TRUE );
SetSizer( topsizer );
m_timer = new wxTimer( this );
m_timer->Start( 100, FALSE );
}
MyFrame::~MyFrame()
@@ -146,6 +176,8 @@ void MyFrame::OnTimer( wxTimerEvent &WXUNUSED(event) )
{
m_sm1->Move( m_sm1->GetX()+1, m_sm1->GetY() );
m_sm2->Move( m_sm2->GetX()+1, m_sm2->GetY() );
m_sm3->Move( m_sm3->GetX()+1, m_sm3->GetY() );
m_sm4->Move( m_sm4->GetX()+1, m_sm4->GetY() );
wxWakeUpIdle();
}