在VS2008中使用TeeChart绘制Gantt图

前言:
    项目需要在MFC对话框上显示一个类似甘特图的图表。除了自己用原生的工具自己绘制外,我想寻找一些已有的控件。在网上搜索了一些资料之后,发现TeeChart可以实现类似的功能。以下就是自己在VS2008中利用TeeChart实现绘制Gantt图的一些记录。

软件环境:
    VS2008和 TeeChart Pro V5。

主题:
    TeeChart的下载安装,以及基本的线图、方柱图的实现都在参考资料【1】有着详细的描述,我也是在一步步的实现了这些功能之后才去实现Gantt图的,并且接下来所涉及的内容都以了解了参考资料【1】的内容为前提的。
【步骤1】在主项目工程中,引入CGanttSeries类(方法同引入CSeries),并在头部相应的添加头文件 CGanttSeries.h
【步骤2】在添加的控件上双击会打开TeeChart的Edit对话框。添加一个Series,类型选择Gantt。
在VS2008中使用TeeChart绘制Gantt图_第1张图片
【步骤3】在程序中添加如下代码:
CSeries series0=(CSeries)m_TChartDemo.get_aSeries(0);
 CGanttSeries ganttSeries=(CGanttSeries)series0.get_asGantt();
 unsigned long myColor[3]={RGB(255,0,0),RGB(0,255,0),RGB(0,0,255)};
 CString str;
 for(int i=0;i<3;i++)
 {
  str.Format(_T("%d"),i);
  for(int j=0;j<2;j++)
   ganttSeries.AddGanttColor(data[i][j][0],data[i][j][1],20*i+10,str,myColor[i]);
 }
其中,m_TChartDemo是我工程用的对应TeeChart控件的变量。data是一个三维数组,大小为3*3*3。其中第一维表示”哪个任务”,第二形维度则是该任务的起始时间和结束时间,之所以是三维的,是因为同一个任务可能有间断,会造成有多个开始和结束时间。当然我这里设置的是每个任务最多间断了两次,只记录三次的开始和结束时间。
函数 long AddGanttColor(double AStart, double AEnd, double AY, LPCTSTR AXLabel, unsigned long Value)。头两个参数是开始和结束时间,第三个参数是在Y轴上的值,第四个参数是任务标识,最后一个参数是颜色值。
最重要的一点,也是困扰我一天的语句是第二行的语句,它将获得的CSeries转换为CGanttSeries,从而可以利用CGanttSeries的方法进行绘制。最后得到的结果如下:
在VS2008中使用TeeChart绘制Gantt图_第2张图片

小结:
利用TeeChart绘制各种线图、方柱图等非常方便,但资料大多是Dephi或者网页的,搜索到的在VC下的资料很少。因此自己花费了很多的时间来寻找资料,最后是在其提供的官方帮助文档中找到了线索,即如下图
在VS2008中使用TeeChart绘制Gantt图_第3张图片
Series.asGantt让我思索可能要在CSeries和CGanttSeries之间进行转换,从而找到了get_asGantt函数,问题也得到了解决。

参考资料:
1、 VS2010 使用TeeChart绘图控件  http://blog.csdn.net/czyt1988/article/details/7428415

你可能感兴趣的:(gantt,vs2008,TeeChart)