TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
生活随笔
收集整理的這篇文章主要介紹了
TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
TeeChart用法(網絡收集)
默認分類 2010-03-05 21:46:05 閱讀788 評論0 字號:大中小
1、TChart Hello world 放一個控件到窗體上,然后寫代碼加入一個折線數據序列: var Series: TLineSeries; begin Series := TLineSeries.Create(Chart1); Series.Add(100, '頭部', clRed); Series.Add(200, '頸部', clGreen); Chart1.AddSeries(Series); end; 這樣就會生成一個簡單的折線圖表,要生成其它類型的數據圖表,可以添加不同的數據序列(各種圖表的序列類型可以參考幫助文檔)。 2.如何設置圖表的標題? TChart組件提供了Title屬性可以這是圖表的標題,包括標題的內容、字體、對齊方式等都可以通過Title屬性設置。 最簡單的設置方式: Chart1.Title.Text.Text := '圖表的標題'; 3.如何修改圖表的背景顏色和整個圖表的顏色? TChart是一個窗體控件,可以通過修改Color屬性設置圖表顏色,這是一種最簡單的方式: Chart1.Color := clWhite; 修改圖表部分的背景色可以通過BackColor屬性來實現: Chart1.BackColor := clGreen; 此外,TChart還提供了漸變的背景支持,通過Gradient控制: Chart1.Gradient.Visible := True; Chart1.Gradient.Direction := gdFromTopLeft; Chart1.Gradient.StartColor := clGreen; Chart1.Gradient.EndColor := clYellow; 4.TChart的3D效果如何控制? TChart提供了View3D屬性,控制是否使用3D效果,View3dWalls屬性控制是否顯示左側的3D墻效果 5.如何不顯示圖表控件生成圖表? 很遺憾,TChart是一個Windows窗體控件,必須依附一個窗體或Windows控件才能使用。如果要不顯示TChart的話,可以將TChart的Visible屬性設為False來使用。下面的例子創建了一個隱藏的TChart來生成圖表: var Chart: TChart; S: TChartSeries; TmpFile: string; begin Chart := TChart.Create(nil); try Chart.Parent := Application.MainForm; Chart.Visible := False; Chart.Title.Text.Text := '測試圖表'; 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使用經驗小結 ? 1、問題:通過Addxy方法給TChart添加標記(Mark)時,發現在TChart的橫坐標會隨著Mark而變化,后來發現通過以下方法可避免這種情況:雙擊TChart,點擊Axis-> top or bottom ->labels,在styles中將labels的形式改為Value即可! 2、幾個有用的屬性:??????? 圖表上的每個點都是有索引的,就象一個數組一樣,在OnClickSeries事件中有個ValueIndex屬性,該屬性可以得到鼠標所點擊的點的索引值(必須將Series的Point設置為可見,鼠標點擊到那個點時才可以觸發該事件)。 xValue[index]、yValue[index]分別表示圖表的索引為index的橫縱坐標值,用這兩個屬性可以讀取和設置索引為index的點的值,注意:不要用xValues和yValues,這兩個屬性也可以達到同樣的目的,但是速度非常的慢。因為后兩個在進行操作的時候可能要遍歷整個圖表上的值(個人觀點) 在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠標當時所在點對應在圖表上的橫縱坐標值。 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; 這里即實現了可以在圖表中拖動某一個點使其在縱軸上變化位置 1.4????? [問題極其使用技巧] 1.4.1??????????? TChart中如何實現只有Y軸的放大與縮小功能? 設置BottomAxis或者LeftAxis的Automatic:=false并同時設置Minimum,Maximum屬性 1.4.2??????????? 如何固定TChart中的坐標,不使TChart中的坐標跟隨Series的變化而變化? //設置底座標 with myChart.BottomAxis do begin Automatic:=false; Minimum:=0; LabelStyle := talText; end; //設置左坐標 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; //設置右坐標 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??????????? 如果橫坐標是時間(日期),如何進行設置? {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中畫出的曲線某個點上標記出該點的值? Series.Marks.Visible:=true; Series.Marks.Style:=smsValue; 1.4.7??????????? 如何設置橫軸或者縱軸的增長率? Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ; Chart.RightAxis.Increment := 1000; 1.4.8??????????? 如何對圖象進行縮放? TChart的ZoomRect或者ZoomPercent方法 (Pie圖可能不支持縮放)? 1.5????? [TChart可以繪制的圖形] 1.5.1??????????? Line ( TLineSeries) 1.5.2????FastLine (TFastLineSeries) 相對Line來說,它損耗了某些屬性從而來實現快速繪制 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的實時繪制]? 實時繪制對機器性能要求比較高,因此我們在編程的時候要注意下面幾個方面: ü???????? 使用2D圖形 ü???????? 是Chart盡可能包含少的點 ü???????? 如果需要,可以移除(remove)chart的legend(?????)和Title ü???????? 使用默認的字體和字體大小 ü???????? 使用FastLineSeries ü???????? 使用實體(solid)畫筆和畫刷格式 ü???????? 盡量避免使用圓形和環行bar樣式 ü???????? 不要使用背景圖片和漸變效果樣式 ü???????? 把Chart的BevelInner和BevelOUter屬性設置為bcNone ü???????? 如果需要,把TChart的AxisVisible屬性設置為False ü???????? 把BufferedDisplay設置為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;設置鼠標右鍵為TChart滾動鍵(默認) ü???????? TeeScrollKeyShift??? := [ ssCtrl ]; 要按住Control鍵才可以使Scroll滾動 1.9????? [TChartSerries使用技巧] 1.9.1??????????? 運行時候創建一個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數組,也有三種方法 1.MySeries := Chart1.SeriesList [ 0 ] 2.MySeries := Chart1.Series [ 0 ] 3.MySeries := Chart1 [ 0 ] 1.9.3??????????? SerriesCount屬性獲得SeriesList中Series的個數 1.9.4??????????? 隱藏TChart中的Series有三種方法,但是效果不等價 1.? Series1.Active:=False; 僅僅隱藏,當設置為true的時候還可以顯示出來 2.? Series1.ParentChart:=nil ; 隱藏,重新設置ParentChart為TChart時候可以顯示 3.? Series1.Free; 刪除了Series. 不可以恢復 1.9.5??????????? TChart中的數據排序 With Series1 do begin YValues.Order:=loAscending; YValues.Sort; Repaint; end; ????????? 定位一個點(Loacate a point) Series1.XValues.Locate(123); ????????? XValue和YValue都擁有的屬性Total , TotalABS , MaxValue , MinValue
delphi中TeeChart的各種屬性 ? TeeChart使用指南
TeeChart控件介紹
TeeChart?? Pro?? ActiveX是西班牙Steema?? SL公司開發的圖表類控件,主要用來生成各種復雜的圖表。熟悉Delphi和C++?? Builder的編程人員對它不會陌生,因為在Delphi和C++?? Builder里包括了TeeChart的VCL版本。
TeeChart使用目的
如果你需要在程序中制作曲線圖、條狀圖、餅狀圖等等,使用這個控件都將是你的明智選擇。它因為是已經被封裝好的產品,所以使用方便,可控性強,不過有的時候會有點小BUG。最好能找到源碼,并自己打幾個補丁。
TeeChart名詞解釋
Series
Axis
Scales
Line
Bar
Pie
TeeChart配置說明
Chart?Series(序列)?? :?? 在一個圖表中可以有一個或多個序列,每個序列可以有不同的顯示類型,如Line、Bar、Pie等等。
Add…?? 添加新的序列
Fast?? Line(TFastLineSeries簡單曲線圖)、
Line(TLineSeries?? 3D曲線圖)、
Bar(TBarSeries豎條狀圖)、
Horiz.?? Bar(THorizBarSeries橫條狀圖)
Area(TAreaSeries?? 區域圖)、
Point(TPointSeries?? 點狀圖)、
Pie(TPieSeries?? 餅狀圖)、
Shape(TChartShape?? 實體圖)、
Gantt(TGanttSeries?? 甘特圖)、
Arrow(TArrowSeries?? 箭頭圖)、
Bubble(TBubbleSeries?? 泡泡圖)
Series?Format:修改序列的格式
Series?Point:修改序列中點的樣子
Series?General:對序列的配置,包括Axis,Legend,Formats,Cursor。
Series?Marks:是否顯示序列中每個點的值。
Series?Data?? Source:數據源??梢圆捎肗o?? Data,Random?? Values,Function。
Title…?? 修改序列的名稱。
Change…?? 修改序列的類型,可以從Line改變成Bar或者Pie。
Chart?General:一些基本的參數設置。
Print?? Priview…:打印及打印預覽
Export…:輸出
Margins:頁邊空白
Allow?? Zoom:允許縮放
Animated?? Zoom:縮放過程是否是動態的,還是一次成功。(如果圖的點太多時,可以打開這個功能)
Allow?? Scroll:滾動條
Chart?Axis?? :?? 控制圖表坐標軸(上、下、左、右、深)的屬性
Show?? Axis:是否顯示坐標軸
Chart?Axis?Scales:調整坐標軸的比例
Automatic:可以自動處理最大與最小值,也可以手工設置。
Change…:可以自動處理增量,也可以手工設置。
Logarithmic:對數的
Inverted:反向的
Chart?Axis?Title:設置坐標軸的標題
Title:標題
Angle:標題的角度
Size:標題的寬度
Font…:標題的字體
Chart?Axis?Labels:設置坐標軸的標簽
Titles?? :???
Chart?Legend(圖例):圖表中的一個長方形的用來顯示圖例標注的區域??梢詷俗eries的名稱或者Series中的項目和數值。
Visible
Back?? Color
Font
Frame
Position
Margin
Legend?? Style
Text?? Style
Resize?? Chart
Inverted
%Top?? Pos
%Color?? Width???
Dividing?? Lines…
Shadow
Chart?Panel?? (面板):Panel可以設置圖表的背景。可以使用漸變的顏色或者圖像文件作為整個圖表的背景
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?? :圖表有幾頁組成
Points?? Per?? Page(每頁顯示幾個點):0為所有的點顯示在一頁,其他按數字處理。
Scale?? Last?? Page:最后一頁按比例顯示,使之充滿整個圖表。
??
Chart?Walls(壁)
Left?? Walls:Y軸的平面
Bottom?? Walls:X軸的平面
Back?? Walls:背后的平面
Pattern…(模式):=(Solid實心,None無,Horizontal豎條紋,Vertical橫條紋,
Diagonal對角線,Back.Diagonal反向對角線,Cross十字線,DiagonalCross對角十字線);
Border…(邊線):=(Solid實線,?? Dash劃線,?? Dot點,???
Dash?? Dot線點,?? Dash?? Dot?? Dot線點點,?? Small?? Dots小點)
Transparent?? (透明)
??
Chart?3D
3Dimensions(維):是否3維顯示
Orthogonal(直角的):3維顯示為直角顯示,則Elevation,Rotaion,Perspective被屏蔽
ZoomText:坐標數字與圖形一起縮放
Zoom:圖形的縮放
Rotaion(旋轉):關閉Orthogonal后,可以在Y軸上旋轉
Elevation(正視圖)?? :關閉Orthogonal后,可以在X軸上旋
Horiz.?? Offset:在X軸移動圖形
Vert.?? Offset:在Y軸移動圖形
Perspective(透視)?? :關閉Orthogonal后,將焦點沿Z軸移動。
??
TeeChart使用實例
//?? 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('網間結算'?? +?? 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();??
總結
以上是生活随笔為你收集整理的TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:冯仕政(1974-),男,中国人民
- 下一篇: 【2016年第1期】农业大数据资产管理面