Teechart圖表應(yīng)用技術(shù)詳解—第三章之圖表的放大和滾動
Steema公司和慧都科技針對中國市場聯(lián)合推出中文版TeeChart for .NET圖表控件,一共漢化2000個詞條(17000個單詞),漢化文檔35000個單詞,包括控件設(shè)計時與運行時的界面漢化以及控件使用向?qū)臋n的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學(xué)習(xí)上沒有任何語言障礙,至少可以節(jié)省30%的開發(fā)時間。TeeChart for .NET中文版具有易上手,使用方便,穩(wěn)定性好,性價比高,價格優(yōu)惠等優(yōu)勢,并且針對Web應(yīng)用提供無限制服務(wù)器分發(fā)授權(quán)方式,非常有利于產(chǎn)品集成。
圖表的放大和滾動
圖表的放大和滾動就是將坐標(biāo)設(shè)置為希望的刻度。當(dāng)滾動和放大后,序列上的所有點將在新的位置重繪。注意:TPieSeries序列不支持放大與滾動操作。
放大(Zoom)
圖表放大通常是由用戶與鼠標(biāo)拖拉交互實現(xiàn)的。圖表的Zoom類的Zoom屬性控制用戶是否通過鼠標(biāo)拖拽進(jìn)行放大,默認(rèn)狀態(tài)為true,即:
Chart1.Zoom. Allow: =True;
用戶可通過鼠標(biāo)拖拽確定一個矩形區(qū)域,以看到圖表的細(xì)節(jié)。拖拽方向與軸方向一致為放大,相反為恢復(fù)(不放大)??梢栽O(shè)定使用哪個鼠標(biāo)按鈕或哪個鍵按下拖拽矩形區(qū)域,默認(rèn)為鼠標(biāo)的左按鈕,也可以通過代碼修改拖拽的默認(rèn)鍵:
Chart1. Zoom. MouseButton: = mbMiddle;
一旦用戶釋放按鈕,圖表將在放大區(qū)域重新顯示。
動畫放大( Animate Zoom)
所謂動畫放大實際是將圖表放大過程按某種要求顯示出來。下列代碼激活動畫放大:
Chart1. Zoom. Animated: =True;
設(shè)置 AnimatedZoom Steps屬性確定動畫的中間幀數(shù):
Chart1. Zoom. AnimatedSteps: =7;
還可以使用全局變量 AnimatedZoom Factor放大因子確定如何線性動畫。因子范圍從1到n:
AnimatedZoomFactor: =2.0
使用代碼進(jìn)行放大( Zoom By Code)
可以通過調(diào)用圖表方法進(jìn)行圖表的放大與縮小。ZoomRect調(diào)節(jié)顯示矩形區(qū)域TRect坐標(biāo)刻度,矩形區(qū)域由屏幕的像素坐標(biāo)表示。矩形區(qū)域在Chart.ChartRect之內(nèi)將執(zhí)行放大操作,否則執(zhí)行縮小操作。
Chart1. ZoomRect(Rect(100, 100, 200, 200));
ZoomPercent設(shè)定圖表放大比例,例如設(shè)放大比例為110%:
Chart1. ZoomPercent(110);
取消放大:
Chart1. ZoomPercent(100);
恢復(fù)顯示( Undoing Zoom)
Undozoom方法技序列的最大值和最小值重新設(shè)置坐標(biāo)刻度,即:
Chart1. UndoZoom;
這時將顯示所有序列的點,取消以前使用鼠標(biāo)或代碼進(jìn)行的放大、縮小操作。
注意:如果需要在取消放大或縮小操作后按指定值設(shè)定坐標(biāo)刻度,可在圖表的 OnUndoZoom事件中進(jìn)行。根據(jù)圖表的四個坐標(biāo)軸是否自動Zoomed屬性返回一個邏輯值,如:
If not Chart1. Zoomed then Chart1. ZoamPercent(150 ); //如果Chart1. Zoomed是 //False,則放大
放大事件( Zoom Events)
當(dāng)手動或程序方式放大圖表時就觸發(fā) OnZoom事件:
procedure TForm1. Chart1Zoom(Sender: TObject); begin Button1.Visible:=True;//使不放大按鈕可見, Button1.Caption:=‘不放大'; end;
當(dāng)由鼠標(biāo)或代碼取消放大時便觸發(fā)OnUndoZoom事件。
滾動( Scrolling)
滾動與放大很類似,當(dāng)坐標(biāo)刻度增加或減少時整個圖表被重新繪制,在新的位置顯示序列的點。圖表的AllowPanning屬性控制拖拽鼠標(biāo)使圖表滾動,它的取值范圍如下:
pmNoneNo:允許滾動。
pmHorizontal:允許水平方向滾動。
pmVertical:允許垂直方向滾動。
pmBoth:允許垂直、水平方向滾動。
例如:
Chart1. AllowPanning :=pmNone; //不允許滾動 同放大一樣,下面的代碼設(shè)定使用鼠標(biāo)右鍵進(jìn)行滾動: Chart1. ScrollMouseButton := mbRight; //使用鼠標(biāo)右鍵按鈕滾動 TeeScrollKeyShift:[ ssCtrl ];//全局變量,按下Ctr1鍵開始滾動
也可使用代碼滾動圖表
Procedure Scroll(Const Offset: Double; CheckLimits: Boolean);
例如:
Chart1. BottomAxis Scroll( 1000, True );
上述代碼使BottomAxis刻度按1000增加,與下列代碼是等效的:
with Chart1. BottomAxis do SetMinMax(Minimum + 1000, Maximum+1000);
并且設(shè)置BottomAxis軸的自動屬性Automatic為 false。這時,圖表重新繪制,而且水平軸滾動到左邊刻度為1000的位置。
滾動事件( Scroll Event)
圖表的OnScroll事件在用戶每次手動滾動圖表時觸發(fā)。例如:
procedure TForm1. Chart1Scroll(Sender: Tobject); begin Label1.Caption:=?個圖表被滾動!'; end;
控制滾動( Controlling Scroll)
OnAllowScroll事件可以被用來接受或拒絕圖表滾動。例如:
procedure TForm1. Chart1AllowScroll(Sender: TChartAxis; var AMin, AMax: Double; var AllowScroll: Boolean); begin if Sender= Chart1. BottomAxis then if AMax >1000 then AllowScroll : =False; end;
以上代碼是當(dāng)用戶設(shè)定BottomAxis軸的最大值大于1000時拒絕滾動。同理,對于時間軸也可采用下述方法進(jìn)行:
if Sender=Chart1.BottomAxis then if Amax>EncodeDate(2000,12,31)then AllowScroll:=False;
鍵盤滾動(Keyboard Scrolling)
當(dāng)設(shè)置窗體的可以KeyPreview屬性為true,可以使用方向鍵滾動。在Keydown事件中根據(jù)按下的鍵調(diào)用軸的Scroll方法進(jìn)行滾動。
下一節(jié)我們將會介紹第三章圖表與序列的操作維護(hù):如何在圖表上自行繪制。如果有對Teechart圖表感興趣的朋友,可以多多關(guān)注本教程,并且歡迎在評論區(qū)留言。
相關(guān)資料推薦:
上一章:函數(shù)的操作
現(xiàn)TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現(xiàn)在搶購可立享優(yōu)惠!
關(guān)注慧聚IT微信公眾號???,了解產(chǎn)品的最新動態(tài)及最新資訊。