2012-12-01 119 views
1

我正在閱讀「TeeChart VCL中的實時圖表:添加大量點的另一種方式是使用直接動態數組」,並且想問如何跳過X軸緩衝區(save浪費的內存空間),而它簡單的包含一個簡單的基數1 .... n = Num點序列。而Num將會在> 100萬的地區。TeeChart快速繪圖

回答

1

我想避免使XValues陣列將被使用TCustomTeeFunction如以下示例的需要最簡單的方法:

var Series1: TFastLineSeries; 
    CustFunci: TCustomTeeFunction; 
    MyValues: array of double; 

procedure TForm1.FormCreate(Sender: TObject); 
var i, nValues: Integer; 
begin 
    //data 
    nValues:=10000; 
    SetLength(MyValues, nValues); 
    MyValues[0]:=Random(10000); 
    for i:=Low(MyValues)+1 to High(MyValues) do 
    MyValues[i]:=MyValues[i-1]+Random(10)-4.5; 

    //chart 
    Chart1.View3D:=false; 
    Chart1.Legend.Visible:=false; 

    Series1:=Chart1.AddSeries(TFastLineSeries) as TFastLineSeries; 

    CustFunci:=TCustomTeeFunction.Create(Self); 
    Series1.FunctionType:=CustFunci; 
    CustFunci.NumPoints:=nValues; 
    CustFunci.OnCalculate:=CustFunciCalculate; 
    CustFunci.ReCalculate; 
end; 

procedure TForm1.CustFunciCalculate(Sender:TCustomTeeFunction; const x:Double; var y:Double); 
begin 
    y:=MyValues[Round(x)]; 
end;