下位机是一温度采集系统,通过串口通讯获取采集的数据,两两数据差别比较小(小于0.001级),想用C#绘制采集到的数据的变化过程,把每次采集的数据绘制成一个点,能够自定义坐标,显示坐标轴(X轴为时间,Y轴为温度值)和坐标刻度,由于我的数据两两之间差别小,Y坐标的起点不能从0开始,坐标范围应该是所有数据的Min值—Max值,这样才能清楚的看出变化趋势。我在VB中,用picturebox控件实现了。但是,C#里picturebox好像主要用于显示图片。不知道该怎么实现,望高手指点。

解决方案 »

  1.   

    可用OWC显示
    OWC11.ChSeries one = chart.SeriesCollection.Add(0);
    one.Type = OWC11.ChartChartTypeEnum.chChartTypeScatterMarkers;//散点图
      

  2.   

    http://www.cnblogs.com/dahuzizyd/articles/621494.html
    http://zedgraph.org/wiki/index.php?title=Scatter_Plot_Demo
    zedgraph免费而且开源,我用着还不错。第一个网址是介绍zedgraph用于动态显示的,第二个是zedgraph绘制散点图的例子,供楼主参考!
      

  3.   

    其实我这里就是很简单的,采集一个数据,添加一个点。在VB里面用Picturebox很容易就实现了的,只是坐标需要自己定义。但c#里的Picturebox貌似没有这个功能。
      

  4.   

    这个用gdi+画容易一些。
    在paint事件里加上e.Graphics.DrawEllipse(Pens.Black, 10, 10, 3, 3);
    就是画圈圈了。
      

  5.   

    如果要是实时的话,我觉得mschart是不错的。
      

  6.   

    添加一个用户控件对象,重写OnPaint函数
      

  7.   

    mschart只能画折线图,不能画散点图。怎么也去不掉连线。而且他的坐标能自定义吗?我在VBPicturebox里画的时候,是定义Y坐标scale为所采集的数据最大值到最小值。很容易实现了,因为我的数据相差特别小,要看出所画点的变化趋势,相当于需要把Y坐标放大。
      

  8.   

    用zedgraph这个开源图表控件啊。可以动态显示数据,我在它的Demo中看到过很不多的
      

  9.   

    zedgraph,怎么实现水平和垂直滚动条呢?Autoscroll设为True也不行呢
      

  10.   

    水平和垂直滚动可以用API中的ScrollWindowEx函数,效率很高,滚动之后你只要画需要画的部分即可
      

  11.   

    楼主实现了吗?给个例子看看,[email protected]