CChart是一款国产精品曲线绘制库,可以绘制多种二维、三维曲线,包括折线图、等高线图、云图、饼图、柱图、散点图、面积图、直方图、极线图、甘特图、雷达图、瀑布图等,具有非常全面的功能。而且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、网络浏览器、甚至是易语言等开发平台上。
2012年本人在CSDN发布了CChart2.0.5.1版本,受到了广泛好评。很多朋友提出了不少中肯的意见,并发现了一些Bug,这些都对于软件的持续改进帮助很大,在此一并表示感谢。
从本质上来说,CChart是本人发明的一个轮子。虽然重复造轮子不是一个很好的习惯,但目前这个轮子已经很好很强大了,功能甚至超过了不少以前的轮子,所以这个轮子本人还是会维护下去。
本人已经在CSDN博客中发布了一个CChart的系列使用教程,相信看了这个教程的朋友,使用CChart会得心应手。
3.0.0.1版本对大数据量情况进行了深层次的优化,重写了内部算法,改写了耗时严重的代码,这样在千万量级的数据点的情况下仍能流畅地运行。同时采用了多种工具进行了内存检测,确保内存无泄漏。因此,本人认为,CChart已经可以满足工业级的应用。
CChart的界面在很大程度上以Origin为范本,3.0.0.1版本增加了多种数据处理功能,进一步接近本人最初拟定的向Origin看齐的目标。数据处理功能包括线性变换、微积分、滤波、拟合等几大类功能。数据拟合功能中,多峰高斯拟合、斜本底高斯拟合等功能非常有特色,当然像多项式拟合、指数拟合、对数拟合、高斯拟合等功能,都是必不可少的啦。
还有一个复活节彩蛋,留给感兴趣的朋友去发掘吧,呵呵。
CChart 3.0.0.1版本的下载地址。http://download.csdn.net/detail/baita96/6427815
CChart开源版本的下载地址。http://download.csdn.net/detail/baita96/6399705
CChart系列教程的网址。http://blog.csdn.net/baita96 http://baita00.blog.51cto.com
2012年本人发布2.0.5.1版本的帖子。http://bbs.csdn.net/topics/390244975
2012年本人发布2.0.0.1版本的帖子。http://bbs.csdn.net/topics/390226284
2010年本人发布MFC版本的帖子。http://bbs.csdn.net/topics/330121732
下面给出少量的贴图。
千万数据量绘图
多峰高斯拟合
Delphi里面画图
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、网络浏览器、甚至是易语言等开发平台上。
2012年本人在CSDN发布了CChart2.0.5.1版本,受到了广泛好评。很多朋友提出了不少中肯的意见,并发现了一些Bug,这些都对于软件的持续改进帮助很大,在此一并表示感谢。
从本质上来说,CChart是本人发明的一个轮子。虽然重复造轮子不是一个很好的习惯,但目前这个轮子已经很好很强大了,功能甚至超过了不少以前的轮子,所以这个轮子本人还是会维护下去。
本人已经在CSDN博客中发布了一个CChart的系列使用教程,相信看了这个教程的朋友,使用CChart会得心应手。
3.0.0.1版本对大数据量情况进行了深层次的优化,重写了内部算法,改写了耗时严重的代码,这样在千万量级的数据点的情况下仍能流畅地运行。同时采用了多种工具进行了内存检测,确保内存无泄漏。因此,本人认为,CChart已经可以满足工业级的应用。
CChart的界面在很大程度上以Origin为范本,3.0.0.1版本增加了多种数据处理功能,进一步接近本人最初拟定的向Origin看齐的目标。数据处理功能包括线性变换、微积分、滤波、拟合等几大类功能。数据拟合功能中,多峰高斯拟合、斜本底高斯拟合等功能非常有特色,当然像多项式拟合、指数拟合、对数拟合、高斯拟合等功能,都是必不可少的啦。
还有一个复活节彩蛋,留给感兴趣的朋友去发掘吧,呵呵。
CChart 3.0.0.1版本的下载地址。http://download.csdn.net/detail/baita96/6427815
CChart开源版本的下载地址。http://download.csdn.net/detail/baita96/6399705
CChart系列教程的网址。http://blog.csdn.net/baita96 http://baita00.blog.51cto.com
2012年本人发布2.0.5.1版本的帖子。http://bbs.csdn.net/topics/390244975
2012年本人发布2.0.0.1版本的帖子。http://bbs.csdn.net/topics/390226284
2010年本人发布MFC版本的帖子。http://bbs.csdn.net/topics/330121732
下面给出少量的贴图。
千万数据量绘图
多峰高斯拟合
Delphi里面画图
CChart数据可视化曲线大数据量数据拟合
CChart真的不错,顶!
CChart是一个个人开发的工具,功能还是比较全面的。调用非常简单,熟悉windows编程的人基本不需要学习就能用。另外这是免费的。
总的说来,MsChart和CChart没有任何关系,本人从来没有用过MsChart。
区别就是它开源,MSchart不开源!
同样,有几个问题需要咨询下LZ。
第一个是能否像 MSchart一样作为控件使用?如果不能作为控件使用那就大打折扣了。
第二个是对于海量数据的绘制效率如何?恕我冒昧,因为我们经常用到的数据量可能上千万级别,虽然看到了LZ的贴图,我想请问下这个绘制效率如何?查询效率如何?
如果都已经考虑并做的很好了,那我就决定采用LZ的这个了。
另祝LZ越做越棒
可以作为一个ActiveX控件使用,事实上我也已经做了一个控件版,用atl做的。
但发布在网上这个不是activex控件版,除非以它的功能为基础再包装成控件。
控件版目前没花大力气去做,现有功能是折线图,饼图,柱图。其实就是一个工作量,需要把函数一个个转成atl控件的格式。
海量数据绘制效率还可以,测试一千万点的绘制延时在0.1秒左右,不过如果你的数据没排序的话,要慢一点,0.5秒左右吧。上面的数据是主观感觉,没精确测试。
我对比一下qwt和CChart
CChart本身是可以的。见图。但目前发布的这个版本没把这个功能包装进去,只能分别绘制等高线或者云图。
如果实在有需要,可以给你定制一个版本。
QWidget可以用winID()获得HWND句柄,然后利用CChartWnd的Attach(HWND hWnd,int type)粘窗口就可以了。不过现在我还有一个问题没有解决,就是直接在QWidget上画图显示不出来,必须动动鼠标,让消息响应起作用图像才能出来。
这不是CChart的原因,而是由于本人对QT的机制理解不透。原来的系列教程中本来准备加一课关于QT的,由于这个问题没有解决,所以就算了。
QT的运行机制和Windows还是不一样,CChart在上面绘图时,内部过程是Win32机制,两方面不太协调。目前的主要问题是QT的paintEvent和Win32的WM_PAINT消息好像不好配合。
如果兄台对QT理解比较深入,我这里有一个QT下的测试工程,可以发给你瞧瞧,看怎么能解决直接画图不显示的问题。
抽时间我会写一个在QT下使用的简单教程。
1. 如果设置曲线的大小[粗细]?
2. SetZoomMode后,鼠标转盘只能向右平移物体。如何做到放大和缩小呢?
3. 如何动态添加新的曲线?直接用AddCurve吗?
你的第三个问题,就是用AddCurve加曲线。
前两个问题现在还没设置接口。
你如果有什么好的想法,可以发给我,我会考虑改进。
博客中新增一篇在界面库DuiLib中的使用教程,希望对大家能有所帮助。
你的第三个问题,就是用AddCurve加曲线。
前两个问题现在还没设置接口。
你如果有什么好的想法,可以发给我,我会考虑改进。楼主谦虚了。3D 除了在交互上少点功能外,其他都很好。小弟不才,有两点建议:
1. 使用鼠标滚轮设置glScalef 控制放大和缩小。
2. 拖拽刚是:
glRotatef angleY, 1#, 0#, 0#
glRotatef angleX, 0#, 1#, 0#
期待早点引出接口。
你的第三个问题,就是用AddCurve加曲线。
前两个问题现在还没设置接口。
你如果有什么好的想法,可以发给我,我会考虑改进。楼主谦虚了。3D 除了在交互上少点功能外,其他都很好。小弟不才,有两点建议:
1. 使用鼠标滚轮设置glScalef 控制放大和缩小。
2. 拖拽刚是:
glRotatef angleY, 1#, 0#, 0#
glRotatef angleX, 0#, 1#, 0#
期待早点引出接口。
多谢!下一版本会考虑您的意见。
不过作者能够坚持到3.0,在国内的开源项目中已经是为数不多的了,这个必须得赞!