Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi TeeChart快速绘图_Delphi_Teechart - Fatal编程技术网

Delphi TeeChart快速绘图

Delphi TeeChart快速绘图,delphi,teechart,Delphi,Teechart,我正在阅读“TeeChart VCL中的实时图表:添加大量点的另一种方法是使用直接动态数组”,我想问一下如何跳过X轴缓冲区(节省浪费的内存空间),而它包含一个简单的基数1…n=Num points序列。而Num将位于>1百万的区域。我认为避免使用XValues数组的最简单方法是使用tcustomtee函数,如下例所示: var Series1: TFastLineSeries; CustFunci: TCustomTeeFunction; MyValues: array of d

我正在阅读“TeeChart VCL中的实时图表:添加大量点的另一种方法是使用直接动态数组”,我想问一下如何跳过X轴缓冲区(节省浪费的内存空间),而它包含一个简单的基数1…n=Num points序列。而Num将位于>1百万的区域。

我认为避免使用XValues数组的最简单方法是使用tcustomtee函数,如下例所示:

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;

我认为避免使用XValues数组的最简单方法是使用tcustomtee函数,如下例所示:

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;