TChart是一個功能強(qiáng)大的繪制各種數(shù)據(jù)圖表的控件,使用它可以很方便的繪制出各種數(shù)據(jù)圖表。下面就來詳細(xì)介紹它的使用。
常用屬性:
AxisVisible:Bool型用于顯示或隱藏圖表上的四個坐標(biāo)軸以及顯示區(qū)域的曲線框
BufferDisplay:Bool型默認(rèn)為Ture.可以提高圖像的顯示速度消除閃爍
MaxPointPerpage:默認(rèn)為0,用來設(shè)置每頁可以顯示的點的數(shù)量,設(shè)置了該屬性之后,除最后一頁外,每頁都是以固定的點數(shù)顯示。(頁:表示的是TChart的大?。?/p>
SeriesList:該屬性為一指針數(shù)組,指向的是TChart中的Series。
獲得TChart中的Serries數(shù)組,也有三種方法 1.MySeries := Chart1.SeriesList [ 0 ] 2.MySeries := Chart1.Series [ 0 ] 3.MySeries := Chart1 [ 0 ] SerriesCount屬性獲得SeriesList中Series的個數(shù) AllowZoom : Boolean 是否允許鼠標(biāo)拖動來縮放圖表,通過拖拽鼠標(biāo)畫出矩形可以實現(xiàn)區(qū)域放大 AnimatedZoom : Boolean 拖動是否顯示縮放過程 ChartHeight : LongInt 以像素為單位,運行為只讀,顯示圖表頂軸與底軸的高度,不包含頁邊距,Height包含頁邊距, DepthAxis,LeftAxis,RightAxis,TopAxis,BottomAxis Tchart共分為五個坐標(biāo)軸, LeftAxis,RightAxis,TopAxis,BottomAxis和DepthAxis 默認(rèn)情況下只顯示LeftAxis和BottomAxis坐標(biāo)軸可以通過Series屬性的子屬性HorizAxis與VertAxis進(jìn)行設(shè)置 如: chart1.Series[0].HorizAxis := aBothHorizAxis; chart1.Series[0].VertAxis := aBothVertAxis; chart1.BottomAxis.Title.Caption := 'nsgtao'; chart1.BottomAxis.Title.Font.Color := clRed; Foot : TChartTitle 在圖表底部定義的文本和格式,在圖表底部顯示一些說明文字 Chart1.Foot.Text.Add('Nsgtao Foot'); Gradient : TChartGradient 用于設(shè)置圖表背景顏色:是否顯示背景色,背景色漸變的起始顏色和終止顏色,漸變方向等 方法,事件,過程:
ZoomRect或者ZoomPercent方法實現(xiàn)圖像縮放
Series類型
Series類型是TChart繪圖的核心,在我看來TChart控件只是一個容器,它存放的Series數(shù)組。根據(jù)不同類型的Series就可以畫出不同類型的圖標(biāo)。從字面意思理解Series是一個序列,是一個數(shù)據(jù)點的序列,一幅圖可以由很多個這樣的數(shù)據(jù)點組成,在TChart繪制圖表實際上就是向TChart中添加數(shù)據(jù)點,TChart根據(jù)添加的點的不同類型畫出不同的圖表。Series就類似一個泛型的TList,由于Delphi沒有公布源碼,這只是我的猜測。
Line ( TLineSeries) 用折線將序列各點連接起來的形式繪制圖表 FastLine (TFastLineSeries) 相對Line來說,它損耗了某些屬性從而來實現(xiàn)快速繪制 Bar (TBarSeries) 繪制垂直的直方圖,每個Series代表一個直方條 Horizontal bar (THorizBarSeries) 和Bar類似只不過是水平方向的直方圖 Area (TAreaSeries) 與Line相同,只不過還要將曲線與X軸的區(qū)域進(jìn)行填充 Point (TPointSeries) 用點的形式顯示一條數(shù)據(jù),就好像將Line中的線去掉 Pie (TPieSeries) 圓餅圖 Arrow (TArrowSeries) Bubble (TBubbleSeries) Gantt (TGanttSeries) Sharp (TChartShape)
TSeries的方法:
Add:用于向Series添加一個新點,可以不用管該點的橫坐標(biāo),如果不添加其他可選參數(shù)的話,默認(rèn)的橫坐標(biāo)表示的是該段區(qū)域的數(shù)據(jù)點的個數(shù)
AddXY:添加點,參數(shù)為XY坐標(biāo)
AddNull:添加值為空的點
1.1 [概述] TChart是delphi里面一個標(biāo)準(zhǔn)的圖形顯示控件。它可以靜態(tài)設(shè)計(at design time)也可以動態(tài)生成。
1.2 [繼承關(guān)系] TObject TPersistent TComponent TControl TCustomControl TWedgetControl TChart TCustomPanel
1.3 [tips] 1.3.1 Pro Version支持Bezier , Contour , Radar 和 point3D 曲線 1.3.2 支持jpeg文件的導(dǎo)出 1.3.3 Chart中的Series 可以連接到Table , Query , RemoteDataset(其他數(shù)據(jù)集) 1.3.4 TChart里的series的active屬性可以實現(xiàn)對已繪制圖形的顯示或者隱藏 1.3.5 在TChart中, tchartSeries是所有具體series的父類,沒有畫出什么來的,用一個具體的series類來創(chuàng)建就可以了,比如用TLineSeries、 TPieSeries、 TPointSeries、 TPointSeries等等都行 1.3.6 TTeeFunction Component可以實現(xiàn)在同一個TChart里面,一個Serries對另一個Serries的統(tǒng)計
1.4 [問題極其使用技巧] 1.4.1 TChart中如何實現(xiàn)只有Y軸的放大與縮小功能? 設(shè)置BottomAxis或者LeftAxis的Automatic:=false并同時設(shè)置Minimum,Maximum屬性 1.4.2 如何固定TChart中的坐標(biāo),不使TChart中的坐標(biāo)跟隨Series的變化而變化? //設(shè)置底座標(biāo) with myChart.BottomAxis do begin Automatic:=false; Minimum:=0; LabelStyle := talText; end; //設(shè)置左坐標(biāo) with myChart.LeftAxis do begin Automatic:=false; Minimum:=0; Title.Angle:=270; Title.Font:=Self.Font; Title.Font.Charset:=ANSI_CHARSET; Title.Font.Name:='@宋體'; Grid.Visible := False; end; //設(shè)置右坐標(biāo) with myChart.RightAxis do begin Automatic:=false; Title.Font:=Self.Font; Title.Font.Charset:=ANSI_CHARSET; Title.Font.Name:='@宋體'; Title.Caption:='累計百分比(%)'; Maximum:=100; Minimum:=0; end; 1.4.3 如何刪除一個圖形中的一個點? 使用Series的delete 方法 1.4.4 如何修改一個點的X或者Y 值? LineSeries1.YValue[3] := 27.1 ; {In Bubble Series} BubbleSeries1.RadiusValues.Value[ 8 ] := 8.1 ; {In Pie Series} PieSeries1.PieValues.Value[ 3 ] := 111 ; 1.4.5 如果橫坐標(biāo)是時間(日期),如何進(jìn)行設(shè)置? {First, you need to set the DateTime property to True in the desired X and/or Y values list.} LineSeries1.XValues.DateTime := True ; {Second, use the same above described methods, but give the values as Date, Time or DateTime values} LineSeries1.AddXY( EncodeDate( 1996 , 1 , 23 ) , 25.4 , 'Barcelona' , clGreen ); 1.4.6 如何在chart中畫出的曲線某個點上標(biāo)記出該點的值? Series.Marks.Visible:=true; Series.Marks.Style:=smsValue; 1.4.7 如何設(shè)置橫軸或者縱軸的增長率? Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ; Chart.RightAxis.Increment := 1000; 1.4.8 如何對圖象進(jìn)行縮放? TChart的ZoomRect或者ZoomPercent方法(Pie圖可能不支持縮放) 1.5 [TChart可以繪制的圖形] 1.5.1 Line ( TLineSeries) 1.5.2 FastLine (TFastLineSeries) 相對Line來說,它損耗了某些屬性從而來實現(xiàn)快速繪制 1.5.3 Bar (TBarSeries) 1.5.4 Horizontal bar (THorizBarSeries) 1.5.5 Area (TAreaSeries) 1.5.6 Point (TPointSeries) 1.5.7 Pie (TPieSeries) 1.5.8 Arrow (TArrowSeries) 1.5.9 Bubble (TBubbleSeries) 1.5.10 Gantt (TGanttSeries) 1.5.11 Sharp (TChartShape)
1.6 [TChart的實時繪制] 實時繪制對機(jī)器性能要求比較高,因此我們在編程的時候要注意下面幾個方面: ü 使用2D圖形 ü 是Chart盡可能包含少的點 ü 如果需要,可以移除(remove)chart的legend(?????)和Title ü 使用默認(rèn)的字體和字體大小 ü 使用FastLineSeries ü 使用實體(solid)畫筆和畫刷格式 ü 盡量避免使用圓形和環(huán)行bar樣式 ü 不要使用背景圖片和漸變效果樣式 ü 把Chart的BevelInner和BevelOUter屬性設(shè)置為bcNone ü 如果需要,把TChart的AxisVisible屬性設(shè)置為False ü 把BufferedDisplay設(shè)置為false可以加速chart的重繪
1.7 |