class MyPlotCurve: public wxPlotCurve
{
public:
- MyPlotCurve( int offsetY ) :
- wxPlotCurve( offsetY ) {}
+ MyPlotCurve( int offsetY, double startY, double endY ) :
+ wxPlotCurve( offsetY, startY, endY ) {}
virtual wxInt32 GetStartX()
{ return 0; }
virtual wxInt32 GetEndX()
- { return 10000; }
+ { return 7000; }
virtual double GetY( wxInt32 x )
{
double dx = x;
dx /= 100;
- return sin( dx )+1;
+ return sin( dx );
}
};
void OnAbout( wxCommandEvent &event );
void OnQuit( wxCommandEvent &event );
+
+ void OnPlotClick( wxPlotEvent &event );
+ void OnPlotDClick( wxPlotEvent &event );
wxPlotWindow *m_plot;
wxTextCtrl *m_log;
IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
BEGIN_EVENT_TABLE(MyFrame,wxFrame)
- EVT_MENU (ID_ABOUT, MyFrame::OnAbout)
- EVT_MENU (ID_QUIT, MyFrame::OnQuit)
+ EVT_MENU (ID_ABOUT, MyFrame::OnAbout)
+ EVT_MENU (ID_QUIT, MyFrame::OnQuit)
+ EVT_PLOT_CLICKED ( -1, MyFrame::OnPlotClick)
+ EVT_PLOT_DOUBLECLICKED ( -1, MyFrame::OnPlotDClick)
END_EVENT_TABLE()
MyFrame::MyFrame()
- : wxFrame( (wxFrame *)NULL, -1, "wxScrolledWindow sample",
+ : wxFrame( (wxFrame *)NULL, -1, "wxPlotWindow sample",
wxPoint(20,20), wxSize(470,500) )
{
wxMenu *file_menu = new wxMenu();
int widths[] = { -1, 100 };
SetStatusWidths( 2, widths );
- m_plot = new wxPlotWindow( this, -1, wxPoint(0,0), wxSize(100,100), wxSUNKEN_BORDER );
- m_plot->SetScrollbars( 10, 10, 500, 0 );
-
- m_plot->Add( new MyPlotCurve(100) );
- m_plot->Add( new MyPlotCurve(40) );
- m_plot->Add( new MyPlotCurve(30) );
+ m_plot = new wxPlotWindow( this, -1, wxPoint(0,0), wxSize(100,100), wxSUNKEN_BORDER | wxPLOT_DEFAULT );
+ m_plot->SetUnitsPerValue( 0.01 );
+ m_plot->SetScrollOnThumbRelease( TRUE );
+
+ m_plot->Add( new MyPlotCurve( 0, -1.5, 1.5 ) );
+ m_plot->Add( new MyPlotCurve( 50, -1.5, 1.5 ) );
+ wxPlotOnOffCurve *oo = new wxPlotOnOffCurve( 10 );
+ oo->Add( 10, 20 );
+ oo->Add( 25, 30 );
+ oo->Add( 100, 400 );
+ oo->Add( 1000, 2000 );
+ m_plot->Add( oo );
m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
{
- (void)wxMessageBox( "wxScroll demo II\n"
- "Robert Roebling (c) 1998",
- "About wxScroll II Demo", wxICON_INFORMATION | wxOK );
+ (void)wxMessageBox( "wxPlotWindow Demo\n"
+ "Robert Roebling (c) 1999,2000",
+ "About wxPlotWindow Demo", wxICON_INFORMATION | wxOK );
+}
+
+void MyFrame::OnPlotClick( wxPlotEvent &event )
+{
+ double x = event.GetPosition() * m_plot->GetUnitsPerValue();
+ double y = event.GetCurve()->GetY( event.GetPosition() );
+ wxLogMessage( "Clicked on curve at x coordinate: %f, value: %f", x, y );
+}
+
+void MyFrame::OnPlotDClick( wxPlotEvent &event )
+{
+ double x = event.GetPosition() * m_plot->GetUnitsPerValue();
+ double y = event.GetCurve()->GetY( event.GetPosition() );
+ wxLogMessage( "Double clicked on curve at x coordinate: %f, value: %f", x, y );
}
//-----------------------------------------------------------------------------