Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101040
  • 博文数量: 16
  • 博客积分: 1435
  • 博客等级: 上尉
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-15 18:51
个人简介

Software

文章分类

全部博文(16)

文章存档

2012年(1)

2011年(1)

2010年(2)

2009年(1)

2008年(6)

2007年(5)

我的朋友

分类: C/C++

2008-05-10 10:45:41

最近需要使用到曲线图的源码。但是在网上只找到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
 
阅读(4590) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~