Teechart圖表應用技術詳解—第六章之以圖表形式導出
Steema公司和慧都科技針對中國市場聯(lián)合推出中文版TeeChart for .NET圖表控件,一共漢化2000個詞條(17000個單詞),漢化文檔35000個單詞,包括控件設計時與運行時的界面漢化以及控件使用向導文檔的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學習上沒有任何語言障礙,至少可以節(jié)省30%的開發(fā)時間。TeeChart for .NET中文版具有易上手,使用方便,穩(wěn)定性好,性價比高,價格優(yōu)惠等優(yōu)勢,并且針對Web應用提供無限制服務器分發(fā)授權方式,非常有利于產(chǎn)品集成。
圖表導出是指將圖表組件產(chǎn)生的圖形轉換為某種格式或以文件形式保存或復制到剪貼板上。Tee Chart Pro v7提供了豐富的轉換格式,圖形可導出的格式有: Native tee、PNG、GIF、BMP、WMF、EMF、JPEG、PCX、PDF、EPS、VML、SVG、GDI+等,數(shù)據(jù)導出的格式有:Native(二進制或文本)tee、文本(CSV)、XML、Excel、HTML表等。
通過調用圖表組件的方法導出
Tee Chart Pro v7為導出圖表提供了多種方法。在程序運行過程中,可以通過調用圖表組件有關復制與保存位圖文件的方法實現(xiàn)圖表導出。組件中的方法可分為兩組,一組是保存為Bitmap格式的位圖文件和元文件( Metafile。)格式,如
Chart1.SaveToBitmapFile( Const FileName:string);
Chart1.Save ToBitmapFile( Const FileName:string: Const R:TRect);
Chart1.Save ToMetafile( Const FileName:string);
Chart1.Save ToMetafileEnh( Const FileName: string);
Chart1.Save ToMetafileRect(Enhances:Boolean, Const FileName: string; Const R:TRect );
另一組方法是將圖表以位圖或元文件格式復制到剪貼板上,如:
Chart1.Copy ToClipboardBitmap;
Chart1.Copy ToClipboardBitmap( Const R:TRect);
Chart1.Copy ToClipboardMetafile( Enhanced: Boolean);
Chart1.Copy ToClipboardMetafile(Enhanced: Boolean; Const R:TRect );
通過調用非可視組件的方法導出
在 TeeChart Pro v7的源程序中,包含類似TeeJPEG.pas、TeePNG.pas、TeeSVGCanvas.pas等一些*pas文件,通過仔細分析發(fā)現(xiàn),這些文件的作用就是將圖表組件顯示的圖表導出為指定的格式。為將圖形轉換為指定格式,需將對應文件在用戶程序的uses段進行引用,也就是說在源程序的uses段加入相應的源文件例如,需要轉換為JPEG格式,則在ues段加入TeeJPEG。即uses TeeJPEG
然后,在導出的代碼段中采用下列格式調用:
procedure TeeSaveToJPEG( APanel:TCustomTeePanel;//圖表組件的Panel Const FileName:WideString;//需要保存的文件名 AWidth, AHeight: Integer);// Panel的寬、高
其中APanel就是圖表組件的Panel, FileName是需要導出的文件名, AWidth、 AHeight分別為Panel的寬和高。下面的代碼將圖表導出為BB.PG文件:
TeeSaveToJPEG (Chart1,'BB.JPG', 289, 229);
為了便于讀者程序設計時使用,下表中列出圖表組件未提供的格式導出所使用的源程序與調用格式。
導出格式列表
格式 | 調用格式 | 源代碼 |
JPEG | procedure TeeSaveToJPEG( Apanel:TcustomTeePanel; const FileName: WideString; Awidth, Aheight: Integer); | TeeJPEG |
PDF | procedure TeeSaveToPDFFile( Apanel:TcustomTeePanel; const FileName: WideString; Awidth:Integer=0; Aheight:Integer=0); | TeePDFCanvas |
PNG | procedure TeeSaveToPNG( Apanel:TcustomTeePanel; const AfileName:WideString; Awidth:Integer=0; Aheight:Integer=0); | TeePNG |
PS | procedure TeeSaveToPSFile( Apanel:TcustomTeePanel; const FileName:WideString; Awidth:Integer=0; Aheight:Integer=0); | TeePSCanvas |
SVG | procedure TeeSaveToSVGFile( Apanel:TcustomTeePanel; const FileName:WideString; Awidth:Integer=0; Aheight:Integer=0); | TeeSVGCanvas |
VML | procedure TeeSaveToVMLFile( Apanel:TcustomTeePanel; const FileName:WideString; Awidth:Integer=0; Aheight:Integer=0); | TeeVMLCanvas |
注意:在導出上標中的任一格式時,必須在uses段引用指定格式的源代碼。
導出對話框( Export Dialog)的調用
在Tee Chart Pro v7的源代碼中,可以找到導出對話框( Export Dialog)窗口及對應代碼,由于該對話框與多個窗體有關,用戶很難在短時內(nèi)將其關系搞清楚,直接調用這個對話框出現(xiàn)的一些錯誤也不知如何處理,這里采用在圖表編輯器的基礎上實現(xiàn)調用導出對話框的功能,導出對話框設計階段的界面如下圖所示。
為了能夠實現(xiàn)導出對話框的功能,這里提供一個最為簡便且與直接調用效果完全相同的方法。在Delphi7的TeeChart組件板上提供了圖表編輯器對話框 TChartEditor,程序設計時可將該組件拖入窗體,然后在調用導出對話框Button2的OnClick事件中加入下列代碼:
begin ChartEditor1.HideTabs:= [cetMain, cetGeneral, cetAxis, cetTitles, cetLegend, cetPanel, cetPaging, cetWalls, cet 3D, cetSeriesGeneral, cetSeriesMarks, cetAllSeries, cetSeriesData, cetExport, cetTools, cetPrintPreview]; ChartEditor1.Title:='圖表導出( Export)'; ChartEditor1.HighLightTabs:=true;//高亮 ChartEditor1.DefaultTab:=cetExport;//頁面名稱,導出頁面 ChartEditor1.Execute; End;
該代碼中的ChartEditor1.HideTabs的作用是將TChartEditor組件中的頁面全部隱藏,然后,以高亮的形式顯示導出頁面( Export)。下圖有單擊調用導出對話框后顯示的導出頁面,與直接調用導出對話框的效果一致。下圖所示的對話框Picture選項卡的Format列表框中顯示的內(nèi)容中只有三種導出類型,出現(xiàn)這種現(xiàn)象的原因是導出的每種格式都是需要源代碼支持的,因此,在用戶程序的uses段需加入下列引用:
TeePDFCanvas, TeeSVGCanvas, TeeVMLCanvas TeePSCanvas, TeePCX, TeeGIF, TeePNG TeeJPEG
上述引用加入后,需要重新啟動計算機,然后再運行該程序,這時導出對話框的Picture選項卡的Format列表框顯示的內(nèi)容就發(fā)生變化——增加了新的格式,如下面右圖所示:
導出對話框調用演示實例
導出對話框調用演示的設計階段界面如下圖所示。窗體上部是圖表組件Chart1,下部的
Panel1上放置導出對話框和退出兩個按鈕Button2和Button1,以及圖表編輯器組件ChartEditor1和定時器Timer1。
圖表編輯器ChartEditor1是在Button2的OnClick事件中調用的,代碼如導出對話框( Export Dialog)的調用中所示。定時器組件是考慮到Series1:TGaugeSeries是一個儀表組件,在任一時刻都只有一個值,所以在Timer1的OnTimer事件中用隨機函數(shù)發(fā)生器產(chǎn)生0~100的一個整數(shù),使得該組件在程序運行期間一直處于動態(tài)變化之中。下面是演示程序的源代碼:
unit Unit1; interface uses Windows, Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,Series,TeEngine,TeeGauges,ExtCtrls,TeeProcs,Chart,TeePDFCanvas,TeeSVGCanvas, TeeVMLCanvas,TeePSCanvas,TeeGIF,TeePNG,TeeJPEG,TeeEdit, Buttons,StdCtrls,JPEG,TeeExport,TeeBmpOptions,TeeEmfOptions,TeeEdiTCha,Menus; type TForm1=class(TForm) Chart:TChart; Timer1:TTimer; Series1:TGaugeSeries; Panel1:TPanel; Button1:TButton; Button2:TButton; ChartEditor1:TChartEditor; procedure Timer1Timer(Sender:TObject); procedure Button1Click(Sender:TObject); procedure Button2Click(Sender:Tobject); Private {Private declarations} public {Public declarations} end; var Form1:TForm1; implementation {$R * .dfm} procedure TForm1.Timer1Timer(Sender:Tobject); begin//定時器事件中產(chǎn)生隨機數(shù)驅動儀表盤 Series1.Value:=Random(100); end; procedure TForm1.Button1Click(Sender: TObject): begin// Button1為退出按鈕 Close; end; procedure TForm1.Button2Click(Sender:TObject); begin//調用圖表編輯器的導出對話框( Export Dialog) ChartEditor1.HideTabs:=//隱藏所有頁面 [cetMain, cetGeneral, cetAxis, cetTitles,cetLegend, cetPanel, cetPaging, cetWalls,cet3D, cetSeriesGeneral,cetSeriesMarks,cetAllSeries,cetSeriesData,cetExport, cetTools, cetPrintPreview]; ChartEditor1.Title:=·圖表導出( Export)'; ChartEditor1.HighLightTabs:=true;//高亮 ChartEditor1.De faultTab:=cetExport;/頁面名稱:導出 ChartEditor1.Execute;//執(zhí)行組件 end; end.
注意:圖表編輯器的Chart屬性一定要設定為圖表組件名,否則將調用失敗。下圖是導出的JPG、EPS、PCX和PDF格式效果示意圖。
相關資料推薦:
上一章:單圖表和多圖表的預覽和打印
下一章:以圖表形式導出
=====================================
現(xiàn)TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現(xiàn)在搶購可立享優(yōu)惠!
關注慧聚IT微信公眾號???,了解產(chǎn)品的最新動態(tài)及最新資訊。