2013-01-13 47 views
3

我有一個充滿TAreaSeries的數據是這樣的: enter image description here如何在運行時設置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

'ColorRange'方法有效嗎?像'dbcDistribution.ColorRange(dbcDistribution.XValues,x1,x2,color);' –

回答

4

有兩種方法來設置顏色:

  • 當您添加值的系列。

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

    其中clYourColorBasedOnX(x : Double): TColor;是您定義的函數。

  • 在呈現系列之前。

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

    一組與你的範圍的調用。


對於用戶繪製的線條最大值,嘗試走Series.XValues [I],直到找到最接近的極限值,走索引,並設置最高至Series1.YValues [指數]。

重複,直到設置了所有限制。

相關問題