我有一个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;
我想改变系列的颜色以匹配其外边框的颜色(例如,中央切片为蓝色,中间切片为绿色,最外层为红色)。这是否可以使用TeeChart Standard v2011.03.32815 32bit VCL?
另外,我找不到修剪垂直线的正确方法,以避免扩展到它们所绘制的区域之外。我应该如何计算这7条线中每条线的正确高度?
答案 0 :(得分:4)
设置颜色有两种方法:
为系列添加值时。
Series1.AddXY(xVal,yVal,'',clYourColorBasedOnX(xVal));
clYourColorBasedOnX( x : Double): TColor;
是您定义的函数。
在介绍该系列之前。
Series1.ColorRange(Series1.XValues,x1,x2,clYourColor);
使用您的范围进行一系列调用。
对于用户绘制的行最大值,尝试走Series.XValues [i]直到找到最接近的限制值,取索引并将max设置为Series1.YValues [index]。
重复,直到设置了所有限制。