CChart库是Micorsoft Windows平台上一个基于C++的二维、三维数据可视化函数库,主要用于数据曲线的绘制。CChart库的特点用一句话概括,就是“功能强悍,调用简单”。 首先是功能足够全面,足够强大;然后是对用户代码的简化做到极致,使用方便。
国产精品C++数据可视化库,可以绘制多种二维、三维曲线,包括折线图、等高线图、云图、饼图、柱图、散点图、面积图、直方图、极线图、甘特图、雷达图、瀑布图等,具有非常全面的功能。而且CChart内部选项极为丰富,无论是曲线本身,还是标题、坐标轴、图例、背景等部分,都有大量的选项可供设置。
在追求功能的同时,CChart在简化调用方面做到了极致,一般只用几句代码就可以画出漂亮的图像。这一点可以说不仅胜过绝大部分非商业的图表库或者控件,甚至不输于大部分商业图表软件。
当然无论怎么努力,总有不能满足的要求。CChart的内核功能相当强大,易于扩展,可以通过定制的方式满足各种特殊要求。
CChart界面美观大方。一般没有专门设置的情况下,默认界面非常简洁,但也相当美观。如果针对各个部分进行设置,CChart的界面可以变得多姿多彩。
尤其值得一提的是CChart内置键盘鼠标的消息响应,各种类型的图像都具有完善的交互功能,可以很方便地在运行状态下修改图像的显示状态。
CChart内部主要采用GDI进行图像绘制,只在极少的情况下调用GDI+作为补充,内部绘图一般都采用PolyLine等打包处理的API函数,基本不对单个像素操作,充分保证了绘图的速度。
CChart采用Win32API进行开发,没有使用任何诸如MFC、WTL、QT等框架,当然在这些框架下使用完全没有问题,这样最大程度上保证了适用范围。同样的理由,由于采用的是Win32API,没法做到跨平台,Linux下是不能用的。
CChart主要的目标平台是VC。除此之外,目前CChart已经可以应用在Borland C++ Builder、Borland Delphi、Visual Basic、网络浏览器、甚至是易语言等开发平台上。CChart 3.0.0.1版。
针对大数据量进行了特别优化,千万量级数据点的显示迅捷如飞,同时通过了多种工具的内存泄漏检测,完全可以满足工业级应用。
按一些朋友提出的建议进行了修改,从实际应用出发的需求,应该比本人闭门造车要好一些吧。
里面包含一个压力测试的工程,测试表明在百万数据点的时候CChart工作很流畅,大家可以试一试。
新增数据处理功能,包括线性变换、微积分、滤波、拟合等方面。
由于功能改进较大,大版本号增加到3.
2013.10.07
CChart 3.0.0.1版本完成。
因功能进化幅度较大,主版本号增加到3。
主要针对大数据量进行了代码优化,千万至亿量级数据轻松绘制,迅捷如飞。
修改当线粗大于1的情况下,线型不起作用的的Bug(这其实应该是微软GDI的Bug,而不是CChart的Bug)。
2013.09.30
CChart 2.5.1.6版本完成。
内部功能优化,主要针对共享X轴视图。
2013.09.24
CChart 2.5.1.5版本完成。
修正数据对话框双击的一个Bug,感谢网友songhuangong发现这个Bug。代码内部细节修改。
2013.09.20
CChart 2.5.1.4版本完成。
修改在系列教程编制过程中发现的小Bug,修改CChart包装类对对话框支持存在的问题。
2013.09.13
CChart 2.5.1.2版本完成。
把等高线图和云图集成进包装类。
2013.09.12
CChart 2.5.1.1版本完成。
新增瀑布图。
修正非负数据的坐标范围从负数开始的小bug,修正发现的其它bug。
对易语言的支持测试成功。
CChart完整发布的载体形式是一个7Zip压缩文件,里面有三个目录Document、SourceAPI、Samples。其中Samples目录中包含两个使用例子FullTestAPI、TestChartWnd,外面还有一个clean.bat文件,用于随时清除VC产生的垃圾文件。
Document目录内是说明文档,也就是本文件,@_@。
CChart库的主要内容都在SourceAPI目录中,库的源代码位于SourceAPIPlot目录下,编译好的静态库Plotd.lib和Plot.lib分别位于SourceAPIDebug和SourceAPIRelease目录下,注意这两个文件有可能不小心被clean.bat清除掉。
SourceAPI目录下有一个VC6的工作区文件Plot.dsw,这个工作区包含两个工程文件,Plot.dsp是静态库的工程文件,TestAPI.dsp是一个小小的测试用工程文件,本人开发时全用它。TestAPI中全面展示了原始编程方法的所有要点,用户代码全部用注释行和注释符号包围。
FullTestAPI目录下是一个较大的测试文件,较全面展示了CChart各个绘图类的使用,采用的编程方法是原始编程方法。为了适应各种不同的Chart类型,里面建立的是一个Chart指针(Chart类实际上就是CPlotImpl类的typedef),而不是类对象。Chart是一个层次较高的类,所有的绘图类都是其子类。对于具体的Chart对象,采用new的方式建立,这和TestAPI中的使用方式略有区别,当然实际效果是一样的。
TestChartWnd目录下也是一个测试文件,向大家展示了窗口类的编程方法,非常的简单方便。