日期:2014-05-20  浏览次数:22181 次

Tchart绘制大量数据速度太慢
本帖最后由 red_codes 于 2010-04-17 22:19:55 编辑 1Qw个double类型的数据点.
绘图方法1:
缺点:使用了大量内存,会引起内存分配失败

LONG PerDraw=10000000;
double* xvalue=NULL;
double* yvalue=NULL;
xvalue=new double[PerDraw];
yvalue=new double[PerDraw];
//数组赋值省略...
m_Tchart.AddArray(PerDraw,yvalue,xvalue);


绘图方法2:
缺点:AddXY绘图太慢

LONG PerDraw=10000000;
double xvalue=0;
double yvalue=0;
//数组赋值省略...
for( ULONGLONG j=0; j<PerDraw; j++)
{
  xvalue=rand()%j;
  yvalue=rand()%j;
  m_Chart.Series(0).AddXY(xvalue,yvalue,_T(""),RGB(192,192,192));
}

想到了用AddArray方法每次绘制100万个点.分10次完成.这样应该可以快很多.但是AddArray方法好像不支持连续ADD,10次绘制完成后只显示第10次的100万个点.前面的9次都被冲掉了.如何连续调用AddArray而不使前面的曲线被擦除?高手指教.
------解决方案--------------------
10万个点放到任何的图表工具上,速度不不会快到哪里去
如果可能的话,压缩数据。
问一下,是什么类型的数据要显示10w个点,最终的呈现结果有是如何呢
------解决方案--------------------
不好意思.不是10W个点.是1QW,1千万个点.Tchart绘制100万个点速度还可以.10W个也不是问题.客户不会太抱怨.但1千万个速度确实慢了很多.
如何压缩数据?请指教.
m_Chart.Series(0).GetAsFastLine().SetDrawAllPoints(FALSE);这个方法只是在显示的时候抽了点.好像不太管用.
double类型的数据.1000万个点.最终呈现结果只是把这些点用fastline曲线连起来并显示.
------解决方案--------------------
我的2w个都太慢了,不过是从文件中读取的。。。