當(dāng)前位置:
首頁(yè) >
TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
發(fā)布時(shí)間:2025/3/15
28
豆豆
生活随笔
收集整理的這篇文章主要介紹了
TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
TeeChart用法(網(wǎng)絡(luò)收集)
默認(rèn)分類 2010-03-05 21:46:05 閱讀788 評(píng)論0 字號(hào):大中小
1、TChart Hello world 放一個(gè)控件到窗體上,然后寫(xiě)代碼加入一個(gè)折線數(shù)據(jù)序列: var Series: TLineSeries; begin Series := TLineSeries.Create(Chart1); Series.Add(100, '頭部', clRed); Series.Add(200, '頸部', clGreen); Chart1.AddSeries(Series); end; 這樣就會(huì)生成一個(gè)簡(jiǎn)單的折線圖表,要生成其它類型的數(shù)據(jù)圖表,可以添加不同的數(shù)據(jù)序列(各種圖表的序列類型可以參考幫助文檔)。 2.如何設(shè)置圖表的標(biāo)題? TChart組件提供了Title屬性可以這是圖表的標(biāo)題,包括標(biāo)題的內(nèi)容、字體、對(duì)齊方式等都可以通過(guò)Title屬性設(shè)置。 最簡(jiǎn)單的設(shè)置方式: Chart1.Title.Text.Text := '圖表的標(biāo)題'; 3.如何修改圖表的背景顏色和整個(gè)圖表的顏色? TChart是一個(gè)窗體控件,可以通過(guò)修改Color屬性設(shè)置圖表顏色,這是一種最簡(jiǎn)單的方式: Chart1.Color := clWhite; 修改圖表部分的背景色可以通過(guò)BackColor屬性來(lái)實(shí)現(xiàn): Chart1.BackColor := clGreen; 此外,TChart還提供了漸變的背景支持,通過(guò)Gradient控制: Chart1.Gradient.Visible := True; Chart1.Gradient.Direction := gdFromTopLeft; Chart1.Gradient.StartColor := clGreen; Chart1.Gradient.EndColor := clYellow; 4.TChart的3D效果如何控制? TChart提供了View3D屬性,控制是否使用3D效果,View3dWalls屬性控制是否顯示左側(cè)的3D墻效果 5.如何不顯示圖表控件生成圖表? 很遺憾,TChart是一個(gè)Windows窗體控件,必須依附一個(gè)窗體或Windows控件才能使用。如果要不顯示TChart的話,可以將TChart的Visible屬性設(shè)為False來(lái)使用。下面的例子創(chuàng)建了一個(gè)隱藏的TChart來(lái)生成圖表: var Chart: TChart; S: TChartSeries; TmpFile: string; begin Chart := TChart.Create(nil); try Chart.Parent := Application.MainForm; Chart.Visible := False; Chart.Title.Text.Text := '測(cè)試圖表'; S := TBarSeries.Create(Chart); Chart.AddSeries(S); S.Title := '嘿嘿'; S.AddXY(1, 56, '一月', clGreen); S.AddXY(2, 67, '二月', clYellow); S.AddXY(3, 34, '三月', clBlue); S.AddXY(4, 78, '四月', clRed); Chart.View3D := False; Chart.BackColor := clWhite; Chart.Gradient.StartColor := clWhite; Chart.Gradient.EndColor := clWhite; Chart.Gradient.Visible := True; TmpFile := Application.ExeName + '.bmp'; Chart.SaveToBitmapFile(TmpFile); Image1.Picture.LoadFromFile(TmpFile); finally Chart.Free; end; end; TChart使用經(jīng)驗(yàn)小結(jié) ? 1、問(wèn)題:通過(guò)Addxy方法給TChart添加標(biāo)記(Mark)時(shí),發(fā)現(xiàn)在TChart的橫坐標(biāo)會(huì)隨著Mark而變化,后來(lái)發(fā)現(xiàn)通過(guò)以下方法可避免這種情況:雙擊TChart,點(diǎn)擊Axis-> top or bottom ->labels,在styles中將labels的形式改為Value即可! 2、幾個(gè)有用的屬性:??????? 圖表上的每個(gè)點(diǎn)都是有索引的,就象一個(gè)數(shù)組一樣,在OnClickSeries事件中有個(gè)ValueIndex屬性,該屬性可以得到鼠標(biāo)所點(diǎn)擊的點(diǎn)的索引值(必須將Series的Point設(shè)置為可見(jiàn),鼠標(biāo)點(diǎn)擊到那個(gè)點(diǎn)時(shí)才可以觸發(fā)該事件)。 xValue[index]、yValue[index]分別表示圖表的索引為index的橫縱坐標(biāo)值,用這兩個(gè)屬性可以讀取和設(shè)置索引為index的點(diǎn)的值,注意:不要用xValues和yValues,這兩個(gè)屬性也可以達(dá)到同樣的目的,但是速度非常的慢。因?yàn)楹髢蓚€(gè)在進(jìn)行操作的時(shí)候可能要遍歷整個(gè)圖表上的值(個(gè)人觀點(diǎn)) 在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠標(biāo)當(dāng)時(shí)所在點(diǎn)對(duì)應(yīng)在圖表上的橫縱坐標(biāo)值。 e.g...... private
? Nowindex:Integer;
? Cantuo:boolean; ........ procedure TfrmMain.Chart1ClickSeries(Sender: TCustomChart;
? Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
? Shift: TShiftState; X, Y: Integer);
begin
? NowIndex:=ValueIndex;
end; procedure TfrmMain.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
? Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=true; end; procedure TfrmMain.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
? Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=false;
end; procedure TfrmMain.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
? Y: Integer);
begin
if Cantuo then
begin
? Series1.yValue[NowIndex]:=? Series1.yScreenToValue(y) ;
end;
end; 這里即實(shí)現(xiàn)了可以在圖表中拖動(dòng)某一個(gè)點(diǎn)使其在縱軸上變化位置 1.4????? [問(wèn)題極其使用技巧] 1.4.1??????????? TChart中如何實(shí)現(xiàn)只有Y軸的放大與縮小功能? 設(shè)置BottomAxis或者LeftAxis的Automatic:=false并同時(shí)設(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:='累計(jì)百分比(%)'; Maximum:=100; Minimum:=0; end; 1.4.3??????????? 如何刪除一個(gè)圖形中的一個(gè)點(diǎn)? 使用Series的delete 方法 1.4.4??????????? 如何修改一個(gè)點(diǎn)的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)是時(shí)間(日期),如何進(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中畫(huà)出的曲線某個(gè)點(diǎn)上標(biāo)記出該點(diǎn)的值? Series.Marks.Visible:=true; Series.Marks.Style:=smsValue; 1.4.7??????????? 如何設(shè)置橫軸或者縱軸的增長(zhǎng)率? Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ; Chart.RightAxis.Increment := 1000; 1.4.8??????????? 如何對(duì)圖象進(jìn)行縮放? TChart的ZoomRect或者ZoomPercent方法 (Pie圖可能不支持縮放)? 1.5????? [TChart可以繪制的圖形] 1.5.1??????????? Line ( TLineSeries) 1.5.2????FastLine (TFastLineSeries) 相對(duì)Line來(lái)說(shuō),它損耗了某些屬性從而來(lái)實(shí)現(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的實(shí)時(shí)繪制]? 實(shí)時(shí)繪制對(duì)機(jī)器性能要求比較高,因此我們?cè)诰幊痰臅r(shí)候要注意下面幾個(gè)方面: ü???????? 使用2D圖形 ü???????? 是Chart盡可能包含少的點(diǎn) ü???????? 如果需要,可以移除(remove)chart的legend(?????)和Title ü???????? 使用默認(rèn)的字體和字體大小 ü???????? 使用FastLineSeries ü???????? 使用實(shí)體(solid)畫(huà)筆和畫(huà)刷格式 ü???????? 盡量避免使用圓形和環(huán)行bar樣式 ü???????? 不要使用背景圖片和漸變效果樣式 ü???????? 把Chart的BevelInner和BevelOUter屬性設(shè)置為bcNone ü???????? 如果需要,把TChart的AxisVisible屬性設(shè)置為False ü???????? 把BufferedDisplay設(shè)置為false可以加速chart的重繪? 1.7????? [Scrolling] TChart有4中scroll選擇(AllowPanning屬性),分別是 不允許Scroll ( pmNone) ; 水平Scroll (pmHorizontal) ; 垂直Scroll (pmVertical)? ;? 水平和垂直Scroll (pmBoth) Procedure Scroll(Const Offset:Double; CheckLimits:Boolean); 例子如下: Chart1.BottomAxis.Scroll(? 1000, True );這段代碼也等同于 With Chart1.BottomAxis do Begin Automatic:=false; SetMinMax( Minimum+1000, Maximum+1000 ); End; 1.8???????????? [TChart中的全局變量] 1.9???????????? ü???????? TeeScrollMouseButton := mbRight;設(shè)置鼠標(biāo)右鍵為T(mén)Chart滾動(dòng)鍵(默認(rèn)) ü???????? TeeScrollKeyShift??? := [ ssCtrl ]; 要按住Control鍵才可以使Scroll滾動(dòng) 1.9????? [TChartSerries使用技巧] 1.9.1??????????? 運(yùn)行時(shí)候創(chuàng)建一個(gè)Serries, 三種方法: 1.Var MySeries : TBarSeries ; MySeries := TBarSeries.Create( Self ); MySeries.ParentChart := Chart1 ; 2.Chart1.AddSeries( TBarSeries.Create( Self ) ); 3.Var MyClass : TChartSeriesClass; MyClass := TBarSeries ; Chart1.AddSeries( MyClass.Create( Self ) ); 1.9.2??????????? 獲得TChart中的Serries數(shù)組,也有三種方法 1.MySeries := Chart1.SeriesList [ 0 ] 2.MySeries := Chart1.Series [ 0 ] 3.MySeries := Chart1 [ 0 ] 1.9.3??????????? SerriesCount屬性獲得SeriesList中Series的個(gè)數(shù) 1.9.4??????????? 隱藏TChart中的Series有三種方法,但是效果不等價(jià) 1.? Series1.Active:=False; 僅僅隱藏,當(dāng)設(shè)置為true的時(shí)候還可以顯示出來(lái) 2.? Series1.ParentChart:=nil ; 隱藏,重新設(shè)置ParentChart為T(mén)Chart時(shí)候可以顯示 3.? Series1.Free; 刪除了Series. 不可以恢復(fù) 1.9.5??????????? TChart中的數(shù)據(jù)排序 With Series1 do begin YValues.Order:=loAscending; YValues.Sort; Repaint; end; ????????? 定位一個(gè)點(diǎn)(Loacate a point) Series1.XValues.Locate(123); ????????? XValue和YValue都擁有的屬性Total , TotalABS , MaxValue , MinValue
delphi中TeeChart的各種屬性 ? TeeChart使用指南
TeeChart控件介紹
TeeChart?? Pro?? ActiveX是西班牙Steema?? SL公司開(kāi)發(fā)的圖表類控件,主要用來(lái)生成各種復(fù)雜的圖表。熟悉Delphi和C++?? Builder的編程人員對(duì)它不會(huì)陌生,因?yàn)樵贒elphi和C++?? Builder里包括了TeeChart的VCL版本。
TeeChart使用目的
如果你需要在程序中制作曲線圖、條狀圖、餅狀圖等等,使用這個(gè)控件都將是你的明智選擇。它因?yàn)槭且呀?jīng)被封裝好的產(chǎn)品,所以使用方便,可控性強(qiáng),不過(guò)有的時(shí)候會(huì)有點(diǎn)小BUG。最好能找到源碼,并自己打幾個(gè)補(bǔ)丁。
TeeChart名詞解釋
Series
Axis
Scales
Line
Bar
Pie
TeeChart配置說(shuō)明
Chart?Series(序列)?? :?? 在一個(gè)圖表中可以有一個(gè)或多個(gè)序列,每個(gè)序列可以有不同的顯示類型,如Line、Bar、Pie等等。
Add…?? 添加新的序列
Fast?? Line(TFastLineSeries簡(jiǎn)單曲線圖)、
Line(TLineSeries?? 3D曲線圖)、
Bar(TBarSeries豎條狀圖)、
Horiz.?? Bar(THorizBarSeries橫條狀圖)
Area(TAreaSeries?? 區(qū)域圖)、
Point(TPointSeries?? 點(diǎn)狀圖)、
Pie(TPieSeries?? 餅狀圖)、
Shape(TChartShape?? 實(shí)體圖)、
Gantt(TGanttSeries?? 甘特圖)、
Arrow(TArrowSeries?? 箭頭圖)、
Bubble(TBubbleSeries?? 泡泡圖)
Series?Format:修改序列的格式
Series?Point:修改序列中點(diǎn)的樣子
Series?General:對(duì)序列的配置,包括Axis,Legend,Formats,Cursor。
Series?Marks:是否顯示序列中每個(gè)點(diǎn)的值。
Series?Data?? Source:數(shù)據(jù)源。可以采用No?? Data,Random?? Values,Function。
Title…?? 修改序列的名稱。
Change…?? 修改序列的類型,可以從Line改變成Bar或者Pie。
Chart?General:一些基本的參數(shù)設(shè)置。
Print?? Priview…:打印及打印預(yù)覽
Export…:輸出
Margins:頁(yè)邊空白
Allow?? Zoom:允許縮放
Animated?? Zoom:縮放過(guò)程是否是動(dòng)態(tài)的,還是一次成功。(如果圖的點(diǎn)太多時(shí),可以打開(kāi)這個(gè)功能)
Allow?? Scroll:滾動(dòng)條
Chart?Axis?? :?? 控制圖表坐標(biāo)軸(上、下、左、右、深)的屬性
Show?? Axis:是否顯示坐標(biāo)軸
Chart?Axis?Scales:調(diào)整坐標(biāo)軸的比例
Automatic:可以自動(dòng)處理最大與最小值,也可以手工設(shè)置。
Change…:可以自動(dòng)處理增量,也可以手工設(shè)置。
Logarithmic:對(duì)數(shù)的
Inverted:反向的
Chart?Axis?Title:設(shè)置坐標(biāo)軸的標(biāo)題
Title:標(biāo)題
Angle:標(biāo)題的角度
Size:標(biāo)題的寬度
Font…:標(biāo)題的字體
Chart?Axis?Labels:設(shè)置坐標(biāo)軸的標(biāo)簽
Titles?? :???
Chart?Legend(圖例):圖表中的一個(gè)長(zhǎng)方形的用來(lái)顯示圖例標(biāo)注的區(qū)域。可以標(biāo)注Series的名稱或者Series中的項(xiàng)目和數(shù)值。
Visible
Back?? Color
Font
Frame
Position
Margin
Legend?? Style
Text?? Style
Resize?? Chart
Inverted
%Top?? Pos
%Color?? Width???
Dividing?? Lines…
Shadow
Chart?Panel?? (面板):Panel可以設(shè)置圖表的背景。可以使用漸變的顏色或者圖像文件作為整個(gè)圖表的背景
Bevel?? Inner??? (Bevel?? Innner?? )?? Width
Bevel?? Outer?? ?(Bevel?? Outer)?? Width
Back?? Image:圖表的背景圖
Style:(Stretch伸展,?? Tile瓦片,?? Center居中)
Inside:只顯示在背后壁上
Panel?? Color:Panel的Inner的顏色
Border:給控件加邊界
Gradient(梯度):梯度顯示顏色
Visible、Start?? Color…、End?? Color…、
Direction(方向):上下、左右、從中間
??
Chart?Paging?? :圖表有幾頁(yè)組成
Points?? Per?? Page(每頁(yè)顯示幾個(gè)點(diǎn)):0為所有的點(diǎn)顯示在一頁(yè),其他按數(shù)字處理。
Scale?? Last?? Page:最后一頁(yè)按比例顯示,使之充滿整個(gè)圖表。
??
Chart?Walls(壁)
Left?? Walls:Y軸的平面
Bottom?? Walls:X軸的平面
Back?? Walls:背后的平面
Pattern…(模式):=(Solid實(shí)心,None無(wú),Horizontal豎條紋,Vertical橫條紋,
Diagonal對(duì)角線,Back.Diagonal反向?qū)蔷€,Cross十字線,DiagonalCross對(duì)角十字線);
Border…(邊線):=(Solid實(shí)線,?? Dash劃線,?? Dot點(diǎn),???
Dash?? Dot線點(diǎn),?? Dash?? Dot?? Dot線點(diǎn)點(diǎn),?? Small?? Dots小點(diǎn))
Transparent?? (透明)
??
Chart?3D
3Dimensions(維):是否3維顯示
Orthogonal(直角的):3維顯示為直角顯示,則Elevation,Rotaion,Perspective被屏蔽
ZoomText:坐標(biāo)數(shù)字與圖形一起縮放
Zoom:圖形的縮放
Rotaion(旋轉(zhuǎn)):關(guān)閉Orthogonal后,可以在Y軸上旋轉(zhuǎn)
Elevation(正視圖)?? :關(guān)閉Orthogonal后,可以在X軸上旋
Horiz.?? Offset:在X軸移動(dòng)圖形
Vert.?? Offset:在Y軸移動(dòng)圖形
Perspective(透視)?? :關(guān)閉Orthogonal后,將焦點(diǎn)沿Z軸移動(dòng)。
??
TeeChart使用實(shí)例
//?? AddPages
NewTabSheet?? :=?? TTabSheet.Create(pgMain);
????????? with?? NewTabSheet?? do
????????? begin
????????????? Parent?? :=?? pgMain;
????????????? PageControl?? :=?? pgMain;
????????????? Tag?? :=?? Ord(CountTypeIndex);
????????????? Caption?? :=?? arrCountType[CountTypeIndex];
????????? end;
//?? AddCharts
????????? NewChart?? :=?? TChart.Create(NewTabSheet);
????????? with?? NewChart?? do
????????? begin
????????????? Parent?? :=?? NewTabSheet;
????????????? Title.Text.Add('網(wǎng)間結(jié)算'?? +?? arrCountType[CountTypeIndex]?? +?? '/天分布圖');
????????????? LeftAxis.Title.Caption?? :=?? arrCountType[CountTypeIndex];
????????????? BottomAxis.Title.Caption?? :=?? '話單日期';
????????????? Legend.Visible?? :=?? sbLegend.Down;
????????????? Legend.Alignment?? :=?? laBottom;
????????????? Legend.LegendStyle?? :=?? lsSeries;
????????????? View3D?? :=?? sb3D.Down;
????????????? Width?? :=?? NewTabSheet.Width;
????????????? Height?? :=?? NewTabSheet.Height;
????????? end;
//?? ClearSeries
????????????? AChart.Series[SeriesIndex].Free;
//?? AddSeries
????????????? NewSeries?? :=?? TLineSeries.Create(AChart);
????????????? NewSeries.Title?? :=?? ANameList.Strings[SeriesIndex];
??
????????????? NewSeries.Marks.Visible?? :=True;
????????????? AChart.AddSeries(NewSeries);
//?? AddNameForSeries
AChart.SeriesList[SeriesIndex].Title:=?? NewName;
//?? ShowSeries
AChart.Series[SeriesIndex].Active?? :=?? True;
//?? EmptySeries
AChart.Series[SeriesIndex].Clear;
//?? FillSeries
AChart.Series[SeriesIndex].AddXY();??
總結(jié)
以上是生活随笔為你收集整理的TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 作者:冯仕政(1974-),男,中国人民
- 下一篇: 【2016年第1期】农业大数据资产管理面