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数据可视化曲线大数据量数据拟合

解决方案 »

  1.   

    终于坐上沙发了。
    CChart真的不错,顶!
      

  2.   

    有评论说“CChart开源版本的下载地址。http://download.csdn.net/detail/baita96/6399705”是老版本,不知是真假。就算是老版本,也要顶,谢谢作者分享、无私奉献
      

  3.   

    不错不错 一直用cp上的那个chart 有机会试试这个
      

  4.   

    有道理,我会考虑加一个选项,强制采用GDI+,就没有这个问题了。
      

  5.   

    MsChart是微软的产品,作为一个大公司的产品,功能应该比较强大,但我没有用过,不好评论。这个东西要用起来比较费事,可能需要学习一阵子。理论上这是要付费的,但在天朝嘛,你懂的。
    CChart是一个个人开发的工具,功能还是比较全面的。调用非常简单,熟悉windows编程的人基本不需要学习就能用。另外这是免费的。
    总的说来,MsChart和CChart没有任何关系,本人从来没有用过MsChart。
      

  6.   

     https://passport.csdn.net/account/active?user=u012518796&active=30a8256df57ef8163f9c4828d71c197a&from=http%3a%2f%2fdownload.csdn.net%2fdetail%2fcory111%2f4050079
      

  7.   


        区别就是它开源,MSchart不开源!
      

  8.   

    嗯,试了下,还不错。在Chart.h中一些函数中加点注释,对函数进行说明下就好了!
      

  9.   

    本人也曾做过类似控件,可惜没有精力去维护。
    同样,有几个问题需要咨询下LZ。
    第一个是能否像 MSchart一样作为控件使用?如果不能作为控件使用那就大打折扣了。
    第二个是对于海量数据的绘制效率如何?恕我冒昧,因为我们经常用到的数据量可能上千万级别,虽然看到了LZ的贴图,我想请问下这个绘制效率如何?查询效率如何?
    如果都已经考虑并做的很好了,那我就决定采用LZ的这个了。
    另祝LZ越做越棒
      

  10.   

    这本身就是一个控件,呵呵。你说的是ActiveX控件吧。
    可以作为一个ActiveX控件使用,事实上我也已经做了一个控件版,用atl做的。
    但发布在网上这个不是activex控件版,除非以它的功能为基础再包装成控件。
    控件版目前没花大力气去做,现有功能是折线图,饼图,柱图。其实就是一个工作量,需要把函数一个个转成atl控件的格式。
    海量数据绘制效率还可以,测试一千万点的绘制延时在0.1秒左右,不过如果你的数据没排序的话,要慢一点,0.5秒左右吧。上面的数据是主观感觉,没精确测试。
      

  11.   

    查询这一块呢?绘制使用缓存初始零点几秒的延迟还是能接受的,查询这一块的效率如何?比如我有需求响应onmousemove在对应位置查询数据,这效率如何?
      

  12.   

    查询没问题,内部数据是vector,有序号立马返回值
      

  13.   

    你可以试试吧,已经有默认的mousemove功能。运行一下plothuge工程就知道了。
      

  14.   

    最近入门VC,以前一直用labview   顶一个~~~~~~~~~~~~~
      

  15.   

    根据兄台的提议,加了注释,重新上传了一下,地址为http://download.csdn.net/detail/baita96/6434017
      

  16.   

    之前用Chat相关的图表主要是用的xtreme toolkit中的Chat那部分,效果也还不错
      

  17.   

    LZ给个qt版本的使用教程吧
    我对比一下qwt和CChart
      

  18.   

    vfdbvbcvbcvbcvbcvb  dvgbbcvbcvb  bbcvb
      

  19.   

    楼主,可以做填充的等高线吗?
    CChart本身是可以的。见图。但目前发布的这个版本没把这个功能包装进去,只能分别绘制等高线或者云图。
    如果实在有需要,可以给你定制一个版本。
      

  20.   

    qt下的使用主要就是一个句柄问题,其它和我博客中教程没有什么不同。
    QWidget可以用winID()获得HWND句柄,然后利用CChartWnd的Attach(HWND hWnd,int type)粘窗口就可以了。不过现在我还有一个问题没有解决,就是直接在QWidget上画图显示不出来,必须动动鼠标,让消息响应起作用图像才能出来。
    这不是CChart的原因,而是由于本人对QT的机制理解不透。原来的系列教程中本来准备加一课关于QT的,由于这个问题没有解决,所以就算了。
    QT的运行机制和Windows还是不一样,CChart在上面绘图时,内部过程是Win32机制,两方面不太协调。目前的主要问题是QT的paintEvent和Win32的WM_PAINT消息好像不好配合。
    如果兄台对QT理解比较深入,我这里有一个QT下的测试工程,可以发给你瞧瞧,看怎么能解决直接画图不显示的问题。
      

  21.   

    刚才又调试了一下,找到了症结所在,终于调试成功。还是QT不熟的原因。
    抽时间我会写一个在QT下使用的简单教程。
      

  22.   

    QT版教程已经发布,在本人的博客http://blog.csdn.net/baita96/中,欢迎光临。
      

  23.   

    3D的曲线效果不错。可以用鼠标拖动图形。 有几点不明白:
    1. 如果设置曲线的大小[粗细]?
    2. SetZoomMode后,鼠标转盘只能向右平移物体。如何做到放大和缩小呢?
    3. 如何动态添加新的曲线?直接用AddCurve吗?
      

  24.   

    兄弟谬赞了,其实我对3D曲线还很不满意,也没有费功夫去做,目前我觉得只是能用,还不够好,没有二维曲线那么强大。
    你的第三个问题,就是用AddCurve加曲线。
    前两个问题现在还没设置接口。
    你如果有什么好的想法,可以发给我,我会考虑改进。
      

  25.   

    多谢楼上。
    博客中新增一篇在界面库DuiLib中的使用教程,希望对大家能有所帮助。
      

  26.   

    兄弟谬赞了,其实我对3D曲线还很不满意,也没有费功夫去做,目前我觉得只是能用,还不够好,没有二维曲线那么强大。
    你的第三个问题,就是用AddCurve加曲线。
    前两个问题现在还没设置接口。
    你如果有什么好的想法,可以发给我,我会考虑改进。楼主谦虚了。3D 除了在交互上少点功能外,其他都很好。小弟不才,有两点建议:
    1. 使用鼠标滚轮设置glScalef 控制放大和缩小。
    2. 拖拽刚是:
    glRotatef angleY, 1#, 0#, 0#
    glRotatef angleX, 0#, 1#, 0#
    期待早点引出接口。
      

  27.   

    兄弟谬赞了,其实我对3D曲线还很不满意,也没有费功夫去做,目前我觉得只是能用,还不够好,没有二维曲线那么强大。
    你的第三个问题,就是用AddCurve加曲线。
    前两个问题现在还没设置接口。
    你如果有什么好的想法,可以发给我,我会考虑改进。楼主谦虚了。3D 除了在交互上少点功能外,其他都很好。小弟不才,有两点建议:
    1. 使用鼠标滚轮设置glScalef 控制放大和缩小。
    2. 拖拽刚是:
    glRotatef angleY, 1#, 0#, 0#
    glRotatef angleX, 0#, 1#, 0#
    期待早点引出接口。
    多谢!下一版本会考虑您的意见。
      

  28.   

    记得作者做1.0的时候,我说了句codeproject上有几个很好的。
    不过作者能够坚持到3.0,在国内的开源项目中已经是为数不多的了,这个必须得赞!