使用chart控件画曲线,如何实现串行的效果?(20分)

  • 主题发起人 主题发起人 lcl_003
  • 开始时间 开始时间
L

lcl_003

Unregistered / Unconfirmed
GUEST, unregistred user!
如果用chart画曲线不加处理的话那曲线就会都挤在一起,会越来越密。看了delphi的
demo,就是窗体demoform里的fast line的效果,只画固定的点数,看起来就好象曲线在
往前串一样。可是代码我没看太懂不知道那里是。
比如我从另外一台机器一次收到50个点的数据,然后用chart画出来。我只想让chart画固定
的100个点。
 
我觉得可以动态的改变坐标的值来处理这个问题
 
不对,其实就是一点一点的往后移
 
demo里的一段代码如下,可是我看不出来那里是控制曲线串行的

procedure TDemoForm.Timer1Timer(Sender: TObject);
var t:Longint;
tmpX:Double;
begin
With NoteBook1 do
Case PageIndex of
0,3,4,6: With TheChart do
begin
for t:=0 to SeriesCount-1 do
With Series[t] do
begin
tmpX:=XValues[1]-XValues[0];
Delete(0);
AddXY( XValues.Last+tmpX,
YValues.Last+Random(100)-50,'',clTeeColor);
end;
end;
1,2,8: With TheChart do
begin
if (tmpTimes=-1) then
begin
tmpSeries:=Random(SeriesCount);
tmpIndex :=Random(Series[tmpSeries].Count);
tmpTimes :=Random(10);
tmpRandom:=2*Round(Random(50)-25.0);
end;
if tmpSeries<>-1 then
begin
if PageIndex=8 then
With (Series[tmpSeries] as TBubbleSeries) do
begin
tmpX:=RadiusValues[tmpIndex]+tmpRandom;
if tmpX>=2 then
begin
RadiusValues[tmpIndex]:=tmpX;
if tmpRandom>0 then tmpX:=XValues[tmpIndex]+1
else tmpX:=XValues[tmpIndex]-1;
XValues[tmpIndex]:=tmpX;
if Random(10)<5 then tmpX:=YValues[tmpIndex]+50
else tmpX:=YValues[tmpIndex]-50;
YValues[tmpIndex]:=tmpX;
end
else tmpTimes:=0;
end
else
With Series[tmpSeries].MandatoryValueList do
Value[tmpIndex]:=Value[tmpIndex]+tmpRandom;
Dec(tmpTimes);
Repaint;
end;
end;
5: (TheChart[0] as TPieSeries).Rotate(358);
end;
end;
 
接受答案了.
 
后退
顶部