最近画一个大数据的曲线图。用过了chart控件,但是这个控件太占内存了;后来用了image画位图,先是简单的画曲线,在使用双缓冲技术,到现在使用第三方控件Tsp_xyplot和Tsp_xyline,都不怎么理想。希望大侠提供帮助一点,指点迷津,谢谢了

解决方案 »

  1.   

    我也一直用的TSP_xyplot ,它有两种数据添加方式吧,一种单个数据的添加,一种是一群数据的添加,你多少数据
      

  2.   

    1个G的文件 也不能说明点的数目。
    你要告诉大家 你最多在1屏有多少个点。这些点有什么关联关系。
    问题的关键不在 怎么画图,而在怎么管理你的这些点。在画的时候 有放大 缩小 缩略图等。在不同的图片场景下,你能得到那些点是有效的 然后做画图会事半功倍。比如 我有1w个点,坐标Y坐标都是1样的,画图的时候 就只画一个线 而不是画1w次点。画图不是问题,用什么控件 用什么方式画图 都不是问题。关键是你怎么把1g个点变成100个点 或者更少 中间就存在一个算法的设计
      

  3.   


    你不说 你是什么曲线。我们就来猜想是,类似示波器的波形数据吧。几个通道的数据用不同的颜色来区分 那么数据结构大概就是
    1、时间戳
    2、值。
    3、通道。
    定义你时间力度颗粒度(10ns,50ns ,100ms等),然后我们要做的就是 在写这个数据的时候做一些处理。
    定义存储方式
     根据时间力度 来存储,存储方式为链表结构或者树形结构
    也就是说 你先把所有数据安装你自己的需要进行分组,并记录每个分组的特征值。画图的时候 ,根据的视觉大小确定你的颗粒度。然后去找对应的分组 特征进行画图。当颗粒度最小的时候 就是1个1个的点了
        
      

  4.   

    电子地图就是这样做的。他的数据更庞大 但是他就是找到了 在什么样的缩放比例下 该画那些数据。
    好好的组织你的数据结构。如果数据是你自己生成的 就在写数据的是把各种特征值都先计算出来 这样在画的时候 不需要重新计算。
    如果数据不是你自己生成的 ,而且别人已经生成好的数据。那么你就又必要在画图前把他的数据重新组织分组 提取特征。
    你的问题的核心还是在数据的组织管理上面。
    你不告诉大家你的数据结构。没人能帮助你。
    都与2维的数据,不外乎就是安装X轴排序和y轴排序。你如果能快速的对2个坐标轴进行排序 那么在画图的时候 就很好找特征值了。
    比如:
    X=1 Y=100
    X=2 Y=300
    X=3 Y=30
    ....
    X=100 Y= 10当你缩放到一定的比例X1 和X100 将会变成1个点。那么你只需找到Y中的最大值就可以 就变成
    X1_100 Max(Y) .问题的关键就是这么找到这个最大的Y,这就是个算法问题把你的数据结构晒出来 或许有人愿意帮你想办法