TeeChart 座標位置から画面上のピクセル位置を取得,ピクセル位置からグラフ上の座標位置を取得など

座標位置から画面上のピクセル位置を取得,ピクセル位置からグラフ上の座標位置を取得など  (TeeChart Pro 8.06)

uessに TeEngineを追加

procedure TForm1.GetPosInfo;
var
  i, XPos, YPos: Integer;
  XVal, YVal: Double;
  str1: String;
begin

  //Seriesのデーター点インデックスから点の値とピクセル位置を取得 =====
  i := Series1.FirstValueIndex;//最初の点のインデックス(LastValueIndexは最後の点)
  //データー点の値を取得
  XVal := Series1.XValue[i];
  YVal := Series1.YValue[i];
  //データー点の画面上のピクセル位置を取得
  XPos := Series1.CalcXPos(i);
  YPos := Series1.CalcYPos(i);

  str1 := ‘[Point index ‘ + IntToStr(i) + ‘]’;
  str1 := str1 + #13#10;
  str1 := str1 + ‘Value =(‘ + FloatToStr(XVal) + ‘, ‘ + FloatToStr(YVal) + ‘)’;
  str1 := str1 + #13#10;
  str1 := str1 + ‘Pixel =(‘ + IntToStr(XPos) + ‘, ‘ + IntToStr(YPos) + ‘)’;
  str1 := str1 + #13#10;

  //ウインドウのピクセル位置からグラフ上の座標位置を取得 =====
 
//ピクセル位置100, 100の座標を取得

  XPos := 100;
  YPos := 100;
  XVal := Series1.XScreenToValue(XPos);
  YVal := Series1.YScreenToValue(YPos);

  str1 := str1 + #13#10;
  str1 := str1 + ‘[Pixel (‘ + IntToStr(XPos) + ‘, ‘ + IntToStr(YPos) + ‘)]’;
  str1 := str1 + #13#10;
  str1 := str1 + ‘Value =(‘ + FloatToStr(XVal) + ‘, ‘ + FloatToStr(YVal) + ‘)’;
  str1 := str1 + #13#10;

  //グラフ上の座標位置からウインドウのピクセル位置を取得 =====

  //座標10.0, 5.0のピクセル位置を取得
  XVal := 10.0;
  YVal := 5.0;
  XPos := Series1.CalcXPosValue(XVal);
  YPos := Series1.CalcYPosValue(YVal);

  str1 := str1 + #13#10;
  str1 := str1 + ‘[Value (‘ + FloatToStr(XVal) + ‘, ‘ + FloatToStr(YVal) + ‘]’;
  str1 := str1 + #13#10;
  str1 := str1 + ‘Pixel = (‘ + IntToStr(XPos) + ‘, ‘ + IntToStr(YPos) + ‘)’;
  str1 := str1 + #13#10;

  ShowMessage(str1);

end;

TeeChartの使い方 折れ線グラフ作成

TeeChartの使い方 折れ線グラフ作成 (TeeChart Pro 8.06)

uessに Series, TeEngineを追加

procedure TForm1.a;
var
   i: Integer;
   Series1: TFastLineSeries; //折れ線(2D)
   Series2: TLineSeries; //リボン(3D)
begin

    Chart1.SeriesList.Clear;

    //Y軸用シリーズを作成
    Series1 := TFastLineSeries.Create(Self);
    Series1.ParentChart := Chart1;
    Series1.VertAxis := aLeftAxis; // 主軸
    Series1.XValues.Order := loAscending; //(loNone, loAscending, loDescending)
    Series1.YValues.Order := loNone; //(loNone, loAscending, loDescending)
    Series1.Active := False;
    Series1.Title := ‘a’;
    Series1.Color := clBlue;
    Series1.Pen.Width := 1;
    Series1.Pen.Style := psSolid;

    //高速化のための設定(通常は必要ないと思われる)===========
    //Falseにすると異なるXピクセル位置を持つポイントのみ描画して高速化

    Series1.DrawAllPoints := False;
    //描画速度向上
    Series1.AutoRepaint := False;//FastPenを有効にするため
    Series1.FastPen := True;
    //データー追加時の速度向上(ソートしない)
    Series1.XValues.Order := loNone;
    //GDIオーバーフローをチェックしないことにより高速化
    //ズームを多用する場合は要注意?

    Chart1.Axes.FastCalc := True;
    //=====================================================

    //データーを追加
    for i := 0 to 100 – 1 do
    begin
      Series1.AddXY(i, Random(10));
    end;
    //シリーズを有効化
    Series1.Active := True;

    //第2Y軸用 シリーズを作成
    Series2 := TLineSeries.Create(Self);
    Series2.ParentChart := Chart1;
    Series2.VertAxis := aRightAxis; // 第2軸
    Series2.XValues.Order := loAscending; //(loNone, loAscending, loDescending)
    Series2.YValues.Order := loNone; //(loNone, loAscending, loDescending)
    Series2.Active := False;
    Series2.Title := ‘b’;
    Series2.Color := clRed;
    Series2.LinePen.Width := 1;
    Series2.LinePen.Style := psSolid;
    Series2.LinePen.Color := clYellow;
    Series2.Dark3D := True; //リボンの裏の色を濃くする

    for i := 0 to 100 – 1 do
    begin
      Series2.AddXY(i, Random(10) + 10);
    end;
    Series2.Active := True;

end;

2009.12.24追記: 線の途切れを作るには,AddNullXYメソッドを使用する. Series2.AddNullXY(x, y, ”)
ただしこれはFastLineSeriesでは使えない.LineSeriesで使用する.

2009.12.27 (2009.12.24追記の訂正):
FastLineSeriesの場合でも,
Series1.IgnoreNulls := false;
Series1.TreatNulls := tnDontPaint;
を設定することでAddNullXYメソッドが有効になる.