轉(zhuǎn)帖|使用教程|編輯:況魚(yú)杰|2019-10-24 14:11:03.210|閱讀 561 次
概述:本教程轉(zhuǎn)自屈景輝的Teechart應(yīng)用技術(shù)詳解——快速圖表制作工具一書,本文將會(huì)介紹此書的第三章圖表與序列的操作維護(hù)的第一小節(jié):圖表軸的維護(hù),將會(huì)介紹軸的刻度設(shè)置、時(shí)間軸與對(duì)數(shù)軸、軸的反轉(zhuǎn)等方面。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Steema公司和慧都科技針對(duì)中國(guó)市場(chǎng)聯(lián)合推出中文版TeeChart for .NET圖表控件,一共漢化2000個(gè)詞條(17000個(gè)單詞),漢化文檔35000個(gè)單詞,包括控件設(shè)計(jì)時(shí)與運(yùn)行時(shí)的界面漢化以及控件使用向?qū)臋n的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學(xué)習(xí)上沒(méi)有任何語(yǔ)言障礙,至少可以節(jié)省30%的開(kāi)發(fā)時(shí)間。TeeChart for .NET中文版具有易上手,使用方便,穩(wěn)定性好,性價(jià)比高,價(jià)格優(yōu)惠等優(yōu)勢(shì),并且針對(duì)Web應(yīng)用提供無(wú)限制服務(wù)器分發(fā)授權(quán)方式,非常有利于產(chǎn)品集成。
點(diǎn)擊下載TeeChart for .NET最新試用版
軸的刻度設(shè)置
Chart組件有左、右、上、下和深度5個(gè)標(biāo)準(zhǔn)軸( LeftAxis、RightAxis、TopAxis、BottomAxis和DepthAxis),每個(gè)軸都是TChartAxis組件類的一個(gè)實(shí)例,而且用戶可以自行增加任意個(gè)坐標(biāo)軸。每個(gè)軸負(fù)責(zé)數(shù)值與像素之間關(guān)系的計(jì)算,以及軸、點(diǎn)的插入和刪除等,各自按默認(rèn)的最大和最小值進(jìn)行計(jì)算。
當(dāng)需要設(shè)定按用戶指定的值進(jìn)行圖表繪制時(shí),可以按下列代碼關(guān)閉自動(dòng)計(jì)算屬性:
Chart1.LeftAxis.Automatic:=False;
也可以采用下列代碼對(duì)最小、最大值按自動(dòng)、非自動(dòng)(設(shè)定值)方式計(jì)算:
Chart1.LeftAxis.AutomaticMaximum:=False; Chart1.LeftAxis.AutomaticMinimum:=True;
也可以通過(guò)Minimum和Maximum屬性改變坐標(biāo)軸的設(shè)定:
with Chart1. LeftAxis do begin Automatic:=False; Minimum:=0; Maximum:= 10000; end;
或者使用軸對(duì)象的方法SetMinMax進(jìn)行設(shè)置:
Chart1.LeftAxis.SetMinMax(0,10000);
時(shí)間軸與對(duì)數(shù)軸
當(dāng)與序列組件關(guān)聯(lián)的軸包含有時(shí)間刻度時(shí),即XValues.DateTime或YValues.DateTime屬性為真時(shí),改變時(shí)間軸的刻度與改變非時(shí)間軸刻度的方法是一樣的:
With Chart1.LeftAxis do begin Automatic:=False; Minimum:=EncodeDate(1990, 3, 16); Maximum := Encode Date(2000, 5, 24 ); end;
如果一個(gè)軸的最大值和最小值大于或等于零,可以將這個(gè)軸設(shè)置為對(duì)數(shù)軸。線性軸和對(duì)數(shù)軸的刻度設(shè)置是不同的。
注意:當(dāng)按對(duì)數(shù)增量方式顯示軸標(biāo)簽時(shí)要借助OnGetNextAxisLabel和OnGetAxisLabel事件產(chǎn)生一個(gè)用戶軸標(biāo)簽。
軸的反轉(zhuǎn)
一個(gè)坐標(biāo)軸可以進(jìn)行反轉(zhuǎn)即Minimum和Maximum進(jìn)行交換,可設(shè)定 Inverted:=True;使用軸反轉(zhuǎn)功能時(shí)往往會(huì)造成誤解,畢竟這種方法不太常用,所以在使用過(guò)程中需要特別注意。
軸的風(fēng)格與增量
坐標(biāo)軸可以通過(guò)多種方式顯示,如刻度線、柵格、標(biāo)簽的有無(wú),可以定制所有的格式屬性如顏色、字體、風(fēng)格等。軸的增量屬性( Increment)控制柵格線的數(shù)暈和軸與標(biāo)簽間的距離。默認(rèn)狀態(tài)增量為0,這意味著軸將自動(dòng)計(jì)算標(biāo)簽間的距離。如果不希望以自動(dòng)方式顯示標(biāo)簽,可以設(shè)置 LabelsSeparation為0:
Chart1.LeftAxis.LabelsSeparation:=0;
下面的代碼設(shè)置垂直軸的增量為30:
Series1.Clear; Series1. AddArray([ 20, 50, 120 ]); Chart1.LeftAxis.Increment:= 30;
默認(rèn)狀態(tài)下,第一個(gè)軸標(biāo)簽從離增量最近的地方開(kāi)始。設(shè)置 RoundFirstLabel為False使標(biāo)簽可以從最大值開(kāi)始:
Chart1.LeftAxis.RoundFirstLabel:=False;
時(shí)間軸增量
可以使用包含定義軸增量的預(yù)定義數(shù)組 DateTimeStep設(shè)置時(shí)間軸:
Chart1.BottomAxis.Increment:=DateTimeStep[dtOneMonth];
如果想使軸標(biāo)簽精確到時(shí)間的邊界,如某月的第一天,可以按如下設(shè)置:
Chart1.BottomAxis.ExactDateTime:=True;
柵格線與軸標(biāo)簽
軸的柵格線是按每個(gè)增量顯示的,或者在每個(gè)軸的標(biāo)簽位置顯示。
TickOnLabelsOnly屬性用于控制這個(gè)功能:
Chart1.BottomAxis.TickOnLabelsOnly:=False;
軸的標(biāo)簽有幾種形式,由LabelStyle屬性控制:
Chart1.BottomAxis.LabelStyle:= talValue;
LabelStyle屬性的可能取值由TAxisLabelStyle類定義:
TAxisLabelStyle=(talAuto, talNone, talValue, talMark, talText);
其中:talValue:顯示軸的刻度。
talMark:顯示序列的點(diǎn)標(biāo)記。
talText:顯示序列的XLabels。
talNone:不顯示。
talAuto:自動(dòng)方式顯示。
當(dāng)LabelStyle是talText時(shí),如果序列沒(méi)有XLabels,TeeChart將自動(dòng)設(shè)置到talValue。對(duì)于talMark和talText風(fēng)格,軸標(biāo)簽將按序列點(diǎn)的位置精確顯示,這時(shí)將不再使用軸的增量屬性也可以在OnGetAxisLabel事件中定值標(biāo)簽文本:
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中定義標(biāo)簽出現(xiàn)的位置。下面這個(gè)例子是在垂直軸正值處顯示標(biāo)簽,從0開(kāi)始,增量是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;
下面的例子是在左軸上繪制標(biāo)簽后停止繪制:
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方法可以在屏幕的指定位置顯示一個(gè)與當(dāng)前存在的軸刻度相同的新軸。下面的例子是用隨機(jī)數(shù)生成一個(gè)線性序列,然后創(chuàng)建兩個(gè)附加的軸。有三個(gè)可指定參數(shù): PosLabels、PosTitle和PosAxis分別放置標(biāo)簽、標(biāo)題和軸的位置,參數(shù)GridVisible的true/false可定義是否擴(kuò)充柵格到新的軸:
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;
自定義軸
使用圖表編輯器實(shí)現(xiàn)
自定義軸可以在設(shè)計(jì)階段使用圖表編輯器實(shí)現(xiàn),步驟如下:
在圖表編輯器的軸(Axis)頁(yè)面使用+按鈕增加一個(gè)軸。
在位置( Position)頁(yè)面設(shè)置軸的有關(guān)屬性。
配置自定義軸的屬性和配置標(biāo)準(zhǔn)軸屬性的方法是一致,它允許移動(dòng)或重新定義軸的維數(shù)。
在序列的通用( General)頁(yè)面建立軸與序列的關(guān)聯(lián)。
使用代碼實(shí)現(xiàn)
下面的代碼增加垂直和水乎兩個(gè)軸并與序列關(guān)聯(lián)。
procedure TForm1.FormCreate(Sender:TObject); begin Series1.FillSampleValues(10); //隨機(jī)生成10個(gè)點(diǎn) 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;
當(dāng)需要訪問(wèn)自定義軸時(shí)可通過(guò) Chart.CustomAxes列表實(shí)現(xiàn)。
下一節(jié)我們將會(huì)介紹第三章圖表與序列的操作維護(hù):序列的維護(hù)(上)。如果有對(duì)Teechart圖表感興趣的朋友,可以多多關(guān)注本教程,并且歡迎在評(píng)論區(qū)留言。
相關(guān)資料推薦:
上一章:Teechart組件的應(yīng)用實(shí)例:Web數(shù)據(jù)源組件ChartWebSource
現(xiàn)TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購(gòu),現(xiàn)在搶購(gòu)可立享優(yōu)惠!
關(guān)注慧聚IT微信公眾號(hào)???,了解產(chǎn)品的最新動(dòng)態(tài)及最新資訊。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: