最近需要使用到曲线图的源码。但是在网上只找到wxChart与wxPlotCtrl的源码。然而wxChart只有pie与bar图表而已。而wxPlotCtrl则在编译时,它所依赖的wxThings竟然出现了问题。因此,我不得不另想方法了...
以前曾经编写过VC++曲线图的程序。现在把它改造成wxWidgets的。
我没时间写下它的详细的使用方式,简单的用法请参考ChartDlgMain.cpp源码。
不同与VC++的是无法subclass控件与wxStaticBox,所以OnPaint就无法自动的调用。因此得自行在OnPaint里调用UpdateChart()来刷新画面。
主要得用法是:
首先在使用wxSmith创建一个wxStaticBox的控件。然后三个步骤就可以使用了。
一)创建与初始化
CChart chart1(ChartDlgFrame::ID_CHART1,_T("CHART 1"),_T("Time"),_T("Temperature"));
二)应用
chart1.DrawChart((wxWindow *)this,10,0.0F,20.0F,200.0F,200.0F);
chart1.AddLine(&CLine(120,LIGHTRED,DOT)); //创建一线条
chart1.pline[0].DrawStraightLine(); //画出来
chart1.UpdateChart(); //刷新曲线图表
我们必须要知道自己了创建了多少条曲线与直线。因为在之后要调用有关线条时,是以照它先后次序的。
如:
chart1.pline[0].DrawStraightLine(); //绘出第0条的线条
或
chart1.pline[2].AddPoint((float)sinh(tmp)+20.0F); //第2条的线条增加一个点
三)画面刷新
void ChartDlgFrame::OnPaint(wxPaintEvent& event)
{
wxPaintDC dc(this);
chart1.UpdateChart();
}
源码:
以上的编程是使用:
CodeBlocks Nightly Build 5020
MinGW
wxWidgets 2.8.7
阅读(4672) | 评论(0) | 转发(0) |