delphi7中TCHart绘图的优化

delphi7中TCHart绘图的优化,delphi,delphi-7,teechart,Delphi,Delphi 7,Teechart,我有一些很棒的输入,但对我来说不起作用,因为我的问题似乎与Delphi7有关 我有一个单系列(TFastLineSeries)和3600个数据点的图表,绘制这个图表需要45秒。其他人说它应该是闪电般的快,所以谁能提供帮助,记住我使用的是Delphi7和标准TChart组件 我想,与其调用AddXY()3600次,不如先准备数据,然后一次添加所有数据 更新:在D7中,AddXy()函数签名是函数AddXy(Const-AXValue,AYValue:Double;Const-AXLabel:St

我有一些很棒的输入,但对我来说不起作用,因为我的问题似乎与Delphi7有关

我有一个单系列(TFastLineSeries)和3600个数据点的图表,绘制这个图表需要45秒。其他人说它应该是闪电般的快,所以谁能提供帮助,记住我使用的是Delphi7和标准TChart组件

我想,与其调用AddXY()3600次,不如先准备数据,然后一次添加所有数据


更新:在D7中,AddXy()函数签名是
函数AddXy(Const-AXValue,AYValue:Double;Const-AXLabel:String;AColor:TColor):Longint;其中
timeLabel
是表示MM:SS的字符串。但我应该传递什么价值呢

我可以用'Chart1.Series[0].AddXY(Chart1.Series[0].Count,codValue,timeLabel,clRed来调用它


顺便说一句,我已经编写了Chart1.Series[0].XValues.DateTime:=True;
Chart1.BottomAxis.DateTimeFormat:=“nn:ss”;//“hh”或“nn”或“ss”,如Chart1.BottomAxis.DateTimeFormat:=“dd/mm/yyyy hh:mm”

您生成要放入图表中的值的方式可能是瓶颈

在Delphi 2010上,我测量了以下代码,测量时间不到1/10秒:

var
  I: Integer;
begin
  for I := 0 to 3000 - 1 do
    Series1.AddXY(Random(1000), Random(100));

顺便说一句:它还可以加快绘图速度,在添加值之前将Chart1.autorepain设置为false,然后将if设置为true

这可能对TeeChart的开发者有所帮助。。。。

当您准备好并一次添加所有内容时会发生什么?如果它能完成您希望它做的事情,JVCL中的TJvChart在绘制直线系列时也比TChart快得多。您可以添加3600个项目,并一次绘图,这肯定比让它多次更新要快,但我相信在TChart中也可以做到这一点。+1大卫,这是我想做的,但我不知道如何编码+1沃伦,我更愿意坚持使用TChart。其他人说应该没有问题+1感谢feedabck。Y轴是一个真正的(也许我应该将其四舍五入并转换为双精度?在RL中,它将始终是0到2000,我怀疑是否有人会注意到图表上的小数部分)。X轴是一个字符串(格式为MM:SS的时间标签,所以可能就是这样)。我会检查它并返回给您。嗯,可能是自动缩放?这不是必须在每个AddXY()处计算吗?而且,在D7中,函数是AddXY(Const-AXValue,AYValue:Double;Const-AXLabel:String;AColor:TColor):Longint;我正在传递Chart1.Series[0].算作第一个参数。我想这也需要时间来计算…或者是吗?当然,每次调用AddXY都会增加它?+1我给出答案,因为你帮助我了解了如何正确表达我的问题Lyreal?这不是很慢吗?到底为什么要使用Real?你应该使用Double。