在绘制曲线的时候,当当前点的X值大于绘制区域坐标的最大X值时,如何动态的改变绘制区域坐标并绘制曲线呢(要实现的结果就是将所有曲线都显示在绘制区域内,绘制区域的大小不能变化)?

解决方案 »

  1.   

    3种方法:
    1:后台开一个大的PICTURE控件,在上面画出完整曲线,然后PAINTPICTURE到前台的显示区域来.
    2:在画点的时候就按比例选择数据,比如你有1000个数据,显示区是500个像素宽,那你可以每2个数据画一个点,怎么选法你可以自己考虑,你可以把2个点的平均值画上去,也可以干脆只画上其中任意一个点.
    3:采用自定义坐标,就是PICTURE自带的那个SCALE方法,可以将物理宽度500像素的控件映射成一个你自己定义的坐标系,比如10000,只要在这个范围内,你随便画,控件会自动缩放到实际像素范围内的.最后一个方法似乎最理想,不过老实说,我最讨厌,像素就是像素,所有API都是用像素,不要用那些乱七八糟的单位.
      

  2.   

    1.SCALE 来改变画布坐标的大小范围
    line 来画图,p1.cls 要将数据送全局数组,然后进行重画,每次动态使用scale改变画布坐标时,将图形清掉,再从头画(或者知道断点,将清的图形再画上,和后面的接上也可以)人眼是看不出来的,只看见曲线在走,和放大缩小
      这个采集图形显示我做过,如果采集的数据频率高,最好不要时时显示图形,最好储存数据做历史曲线回放
    2.api函数画图快,但不太方便
      

  3.   

    我是做汽车底盘测功机控制软件的,大约一秒钟要采集5-10个点左右
    我也考虑过存全局数组,在超过绘制区域最大X值时,改变绘制区域scale,然后重画整条曲线
    但是等到数组比较大的时候感觉比较慢,在cls后重画闪烁现象比较严重。