3

私はTAreaSeriesこのようなデータでいっぱいです: ここに画像の説明を入力してください

このコードを使用して、グラフに垂直線を描画しています。

procedure TfrmDistributionChart.dbcDistributionAfterDraw(Sender: TObject);
var
  XPos: Integer;
begin
  dbcDistribution.Canvas.Pen.Width := 3;

  dbcDistribution.Canvas.Pen.Color := clBlack;
  XPos := dbcDistribution.BottomAxis.CalcPosValue(0);
  dbcDistribution.Canvas.DoVertLine(XPos, dbcDistribution.LeftAxis.IStartPos,
    dbcDistribution.LeftAxis.IEndPos);

  dbcDistribution.Canvas.Pen.Color := clBlue;
  XPos := dbcDistribution.BottomAxis.CalcPosValue(-SD);
  dbcDistribution.Canvas.DoVertLine(XPos, dbcDistribution.LeftAxis.IStartPos,
    dbcDistribution.LeftAxis.IEndPos);
  XPos := dbcDistribution.BottomAxis.CalcPosValue(SD);
  dbcDistribution.Canvas.DoVertLine(XPos, dbcDistribution.LeftAxis.IStartPos,
    dbcDistribution.LeftAxis.IEndPos);

  dbcDistribution.Canvas.Pen.Color := clGreen;
  XPos := dbcDistribution.BottomAxis.CalcPosValue(-2 * SD);
  dbcDistribution.Canvas.DoVertLine(XPos, dbcDistribution.LeftAxis.IStartPos,
    dbcDistribution.LeftAxis.IEndPos);
  XPos := dbcDistribution.BottomAxis.CalcPosValue(2 * SD);
  dbcDistribution.Canvas.DoVertLine(XPos, dbcDistribution.LeftAxis.IStartPos,
    dbcDistribution.LeftAxis.IEndPos);

  dbcDistribution.Canvas.Pen.Color := clRed;
  XPos := dbcDistribution.BottomAxis.CalcPosValue(-3 * SD);
  dbcDistribution.Canvas.DoVertLine(XPos, dbcDistribution.LeftAxis.IStartPos,
    dbcDistribution.LeftAxis.IEndPos);
  XPos := dbcDistribution.BottomAxis.CalcPosValue(3 * SD);
  dbcDistribution.Canvas.DoVertLine(XPos, dbcDistribution.LeftAxis.IStartPos,
    dbcDistribution.LeftAxis.IEndPos);
end;

シリーズの色を外側の境界線の色と一致するように変更したいと思います(たとえば、中央のスライスは青、中央のスライスは緑、最も外側のスライスは赤)。これはTeeChartStandardv2011.03.32815 32ビットVCLで可能ですか?

また、垂直線が描かれている領域を超えて拡大しないようにするために、垂直線をトリミングする正しい方法を見つけることができませんでした。これらの7本の線のそれぞれの適切な高さをどのように計算する必要がありますか?

4

1 に答える 1

4

色を設定する方法は2つあります。

  • シリーズに値を追加するとき。

    Series1.AddXY(xVal,yVal,'',clYourColorBasedOnX(xVal));
    

    clYourColorBasedOnX( x : Double): TColor;定義する関数はどこにありますか。

  • シリーズを紹介する前に。

    Series1.ColorRange(Series1.XValues,x1,x2,clYourColor);
    

    範囲を指定した一連の呼び出し。


ユーザーが描いた線の最大値については、最も近い制限値が見つかるまでSeries.XValues [i]を歩き、インデックスを取得して、maxをSeries1.YValues[index]に設定してみてください。

すべての制限が設定されるまで繰り返します。

于 2013-01-13T14:29:28.870 に答える