轉帖|使用教程|編輯:況魚杰|2019-10-24 14:11:03.210|閱讀 535 次
概述:本教程轉自屈景輝的Teechart應用技術詳解——快速圖表制作工具一書,本文將會介紹此書的第三章圖表與序列的操作維護的第一小節:圖表軸的維護,將會介紹軸的刻度設置、時間軸與對數軸、軸的反轉等方面。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Steema公司和慧都科技針對中國市場聯合推出中文版TeeChart for .NET圖表控件,一共漢化2000個詞條(17000個單詞),漢化文檔35000個單詞,包括控件設計時與運行時的界面漢化以及控件使用向導文檔的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學習上沒有任何語言障礙,至少可以節省30%的開發時間。TeeChart for .NET中文版具有易上手,使用方便,穩定性好,性價比高,價格優惠等優勢,并且針對Web應用提供無限制服務器分發授權方式,非常有利于產品集成。
軸的刻度設置
Chart組件有左、右、上、下和深度5個標準軸( LeftAxis、RightAxis、TopAxis、BottomAxis和DepthAxis),每個軸都是TChartAxis組件類的一個實例,而且用戶可以自行增加任意個坐標軸。每個軸負責數值與像素之間關系的計算,以及軸、點的插入和刪除等,各自按默認的最大和最小值進行計算。
當需要設定按用戶指定的值進行圖表繪制時,可以按下列代碼關閉自動計算屬性:
Chart1.LeftAxis.Automatic:=False;
也可以采用下列代碼對最小、最大值按自動、非自動(設定值)方式計算:
Chart1.LeftAxis.AutomaticMaximum:=False; Chart1.LeftAxis.AutomaticMinimum:=True;
也可以通過Minimum和Maximum屬性改變坐標軸的設定:
with Chart1. LeftAxis do begin Automatic:=False; Minimum:=0; Maximum:= 10000; end;
或者使用軸對象的方法SetMinMax進行設置:
Chart1.LeftAxis.SetMinMax(0,10000);
時間軸與對數軸
當與序列組件關聯的軸包含有時間刻度時,即XValues.DateTime或YValues.DateTime屬性為真時,改變時間軸的刻度與改變非時間軸刻度的方法是一樣的:
With Chart1.LeftAxis do begin Automatic:=False; Minimum:=EncodeDate(1990, 3, 16); Maximum := Encode Date(2000, 5, 24 ); end;
如果一個軸的最大值和最小值大于或等于零,可以將這個軸設置為對數軸。線性軸和對數軸的刻度設置是不同的。
注意:當按對數增量方式顯示軸標簽時要借助OnGetNextAxisLabel和OnGetAxisLabel事件產生一個用戶軸標簽。
軸的反轉
一個坐標軸可以進行反轉即Minimum和Maximum進行交換,可設定 Inverted:=True;使用軸反轉功能時往往會造成誤解,畢竟這種方法不太常用,所以在使用過程中需要特別注意。
軸的風格與增量
坐標軸可以通過多種方式顯示,如刻度線、柵格、標簽的有無,可以定制所有的格式屬性如顏色、字體、風格等。軸的增量屬性( Increment)控制柵格線的數暈和軸與標簽間的距離。默認狀態增量為0,這意味著軸將自動計算標簽間的距離。如果不希望以自動方式顯示標簽,可以設置 LabelsSeparation為0:
Chart1.LeftAxis.LabelsSeparation:=0;
下面的代碼設置垂直軸的增量為30:
Series1.Clear; Series1. AddArray([ 20, 50, 120 ]); Chart1.LeftAxis.Increment:= 30;
默認狀態下,第一個軸標簽從離增量最近的地方開始。設置 RoundFirstLabel為False使標簽可以從最大值開始:
Chart1.LeftAxis.RoundFirstLabel:=False;
時間軸增量
可以使用包含定義軸增量的預定義數組 DateTimeStep設置時間軸:
Chart1.BottomAxis.Increment:=DateTimeStep[dtOneMonth];
如果想使軸標簽精確到時間的邊界,如某月的第一天,可以按如下設置:
Chart1.BottomAxis.ExactDateTime:=True;
柵格線與軸標簽
軸的柵格線是按每個增量顯示的,或者在每個軸的標簽位置顯示。
TickOnLabelsOnly屬性用于控制這個功能:
Chart1.BottomAxis.TickOnLabelsOnly:=False;
軸的標簽有幾種形式,由LabelStyle屬性控制:
Chart1.BottomAxis.LabelStyle:= talValue;
LabelStyle屬性的可能取值由TAxisLabelStyle類定義:
TAxisLabelStyle=(talAuto, talNone, talValue, talMark, talText);
其中:talValue:顯示軸的刻度。
talMark:顯示序列的點標記。
talText:顯示序列的XLabels。
talNone:不顯示。
talAuto:自動方式顯示。
當LabelStyle是talText時,如果序列沒有XLabels,TeeChart將自動設置到talValue。對于talMark和talText風格,軸標簽將按序列點的位置精確顯示,這時將不再使用軸的增量屬性也可以在OnGetAxisLabel事件中定值標簽文本:
procedure TForm1.Chart1GetAxisLabel (Sender:TChartAxis; Series:TChartSeries: ValueIndex: Integer; var LabelText: String); begin if Sender=Chart1. LeftAxis then if ValueInde<2 then LabelText :=' '; end;
在OnGetNextAxisLabelEvent中定義標簽出現的位置。下面這個例子是在垂直軸正值處顯示標簽,從0開始,增量是250:
procedure TAxisLabelsForm.Chart1GetNextAxisLabel (Sender:TChartAxis; LabelIndex: Integer; var Labelvalue: Double; var Stop: Boolean); begin if Sender=Chart1. LeftAxis then begin if LabelValue>=250 then LabelValue:=LabelValue+250 else LabelValue:=250; end; stop:=False; end;
下面的例子是在左軸上繪制標簽后停止繪制:
procedure TForm1.Chart1GetNextAxisLabel(Sender:TChartAxis; LabelIndex: Integer; var LabelValue: Double; var Stop: Boolean); begin if Sender=Chart1. LeftAxis then begin stop:=False; case LabelIndex of 0: LabelValue:=50; 1: LabelValue: =80; 2: LabelValue:=110; else Stop:=True; end; end;
自定義軸繪制( CustomDraw)
Customdraw方法可以在屏幕的指定位置顯示一個與當前存在的軸刻度相同的新軸。下面的例子是用隨機數生成一個線性序列,然后創建兩個附加的軸。有三個可指定參數: PosLabels、PosTitle和PosAxis分別放置標簽、標題和軸的位置,參數GridVisible的true/false可定義是否擴充柵格到新的軸:
procedure TForm1.FormCreate(Sender:TObject); var t:integer; begin Series1.XValues.DateTime:=False; Chart1.BottomAxis.Increment:=0; For t: =-10 to 10 do Series1. addXY(t, Random (100),' ', clTeeColor); end; procedure TForm1.Series1AfterDrawValues(Sender: Tobject); var posaxis, percent: Integer; begin percent:=50; with DBChart1 do begin PosAxis:=ChartRect.Left+Trunc( ChartWidth*Percent/100.0); LeftAxis.CustomDraw(posaxis-10,posaxis-40,posaxis,True); PosAxis:=ChartRect.Top+Trunc( ChartHeight*Percent/100.0); BottomAxis CustomDraw(posaxis+10, posaxis+40, posaxis,True); end;
自定義軸
使用圖表編輯器實現
自定義軸可以在設計階段使用圖表編輯器實現,步驟如下:
在圖表編輯器的軸(Axis)頁面使用+按鈕增加一個軸。
在位置( Position)頁面設置軸的有關屬性。
配置自定義軸的屬性和配置標準軸屬性的方法是一致,它允許移動或重新定義軸的維數。
在序列的通用( General)頁面建立軸與序列的關聯。
使用代碼實現
下面的代碼增加垂直和水乎兩個軸并與序列關聯。
procedure TForm1.FormCreate(Sender:TObject); begin Series1.FillSampleValues(10); //隨機生成10個點 Series2.FillSampleValues(10); end; procedure TForm1.BitBtn1Click(Sender:Tobject); var tmpVertAxis:TChartAxis; tmpHorizAxis:TChartAxis; tmpVertAxis.PositionPercent:=-50; Series1.CustomVertAxis:=tmpVertAxis; Chart1.CustomAxes.Add; //增加水平軸 tmpHorizAxis:=Chart1.CustomAxes[1]; tmpHorizAxis.Horizonta1:=True; tmpHorizAxis.Axis.Color:=c1Green; tmpHorizAxis.PositionPercent:=50; Series1.CustomHorizAxis:=tmpHorizAxis; end;
當需要訪問自定義軸時可通過 Chart.CustomAxes列表實現。
下一節我們將會介紹第三章圖表與序列的操作維護:序列的維護(上)。如果有對Teechart圖表感興趣的朋友,可以多多關注本教程,并且歡迎在評論區留言。
相關資料推薦:
上一章:Teechart組件的應用實例:Web數據源組件ChartWebSource
現TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現在搶購可立享優惠!
關注慧聚IT微信公眾號???,了解產品的最新動態及最新資訊。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: