void MywxCanvasImage::OnMouse(wxMouseEvent &event)
{
- static bool first=false;
static int dx=0;
static int dy=0;
int x = event.GetX();
int y = event.GetY();
- if (event.m_leftDown)
- { if (!first)
- {
- first=true;
- dx=x;
- dy=y;
- }
- Move(m_area.x+x-dx,m_area.y+y-dy);
+ if (event.LeftDown())
+ {
+ dx=x;
+ dy=y;
CaptureMouse();
+ }
+ else if (event.LeftUp())
+ {
+ ReleaseMouse();
}
else if (IsCapturedMouse())
{
- ReleaseMouse();
- first=false;
- dx=0;dy=0;
+ Move(m_area.x+x-dx,m_area.y+y-dy);
+ m_owner->UpdateNow();
}
}
void MywxCanvasObjectGroupRef::OnMouse(wxMouseEvent &event)
{
- static bool first=false;
- static dx=0;
- static dy=0;
+ static int dx=0;
+ static int dy=0;
//new position of object
int x = m_owner->GetDeviceX( event.GetX());
int y = m_owner->GetDeviceY( event.GetY());
- if (event.m_leftDown)
- { if (!first)
- {
- first=true;
- dx=x;
- dy=y;
- }
- Move(m_x+x-dx,m_y+y-dy);
+ if (event.LeftDown())
+ {
+ dx=x;
+ dy=y;
CaptureMouse();
+ }
+ else if (event.LeftUp())
+ {
+ ReleaseMouse();
}
else if (IsCapturedMouse())
{
- ReleaseMouse();
- first=false;
- dx=0;dy=0;
+ Move(m_x+x-dx,m_y+y-dy);
+ m_owner->UpdateNow();
}
}
MyFrame::MyFrame()
: wxFrame( (wxFrame *)NULL, -1, "wxCanvas sample",
- wxPoint(20,20), wxSize(470,860) )
+ wxPoint(20,20), wxSize(470,460) )
{
wxMenu *file_menu = new wxMenu();
file_menu->Append( ID_ABOUT, "&About...");
m_canvas = new wxCanvas( this, -1, wxPoint(0,0), wxSize(10,10) );
- m_canvas->SetArea( 1400, 600 );
+ m_canvas->SetArea( 1000,1000 );
m_canvas->SetColour( 255, 255, 255 );
wxBitmap bitmap( smile_xpm );
wxImage image( bitmap );
- m_sm1 = new wxCanvasImage( image, 0,70,16,16 );
+ m_sm1 = new wxCanvasImage( image, 0,70,32,32 );
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 ) );
+ {
+ wxCanvasRect *r = new wxCanvasRect( i,50,3,140 );
+ r->SetBrush( *wxRED_BRUSH );
+ m_canvas->Append( r );
+ }
m_sm2 = new wxCanvasImage( image, 0,140,24,24 );
m_canvas->Append( m_sm2 );
for (i = 15; i < 300; i+=10)
- m_canvas->Append( new wxCanvasRect( i,50,3,140, 255,0,0 ) );
+ m_canvas->Append( new wxCanvasRect( i,50,3,140 ) );
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( "How are you?", 180, 10,
+ wxGetApp().GetFontPath() + "/times.ttf", 8 ) );
+
+ m_canvas->Append( new wxCanvasText( "How are you?", 180, 20,
+ wxGetApp().GetFontPath() + "/times.ttf", 10 ) );
+
+ m_canvas->Append( new wxCanvasText( "How are you?", 180, 30,
+ wxGetApp().GetFontPath() + "/times.ttf", 12 ) );
m_sm3 = new wxCanvasImage( image, 0,210,32,32 );
m_canvas->Append( m_sm3 );
for (i = 10; i < 300; i+=10)
- m_canvas->Append( new wxCanvasLine( 10,-15,i,300, 0,255,0 ) );
+ m_canvas->Append( new wxCanvasLine( 10,-15,i,300 ) );
m_sm4 = new MywxCanvasImage( image, 0,270,64,32 );
m_canvas->Append( m_sm4 );
// m_canvas->Append( new wxCanvasLine( 10,-1500e6,50,300000e6, 0,255,0 ) );
// m_canvas->Append( new wxCanvasLine( 10,-150000,50,300000, 0,255,0 ) );
+/*
//make a group of wxCanvasObjects
wxCanvasObjectGroup* group1 = new wxCanvasObjectGroup();
- group1->Prepend( new wxCanvasLine( 10,-35,50,190,100,255,0 ) );
+ group1->Prepend( new wxCanvasLine( 10,-35,50,190 ) );
group1->Prepend( new wxCanvasImage( image, 4,38,32,32 ) );
group1->Prepend( new wxCanvasRect(20,-20,50,170,0,20,240 ) );
- group1->Prepend( new wxCanvasRect(10,20,104,52,0,240,240 ) );
-
//make another group of wxCanvasObjects
wxCanvasObjectGroup* group2 = new wxCanvasObjectGroup();
m_ref2 = new MywxCanvasObjectGroupRef(80,350, group1);
m_canvas->Prepend( m_ref2 );
-
+*/
m_log = new wxTextCtrl( this, -1, "", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
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()+2, m_sm4->GetY() );
+/*
m_ref->Move( m_ref->GetPosX()+1, m_ref->GetPosY() );
m_ref2->Move( m_ref2->GetPosX()+2, m_ref2->GetPosY() );
-
+*/
+
wxWakeUpIdle();
}