Teechart图表应用技术详解—第六章之以图表形式导出
Steema公司和慧都科技针对中国市场联合推出中文版TeeChart for .NET图表控件,一共汉化2000个词条(17000个单词),汉化文档35000个单词,包括控件设计时与运行时的界面汉化以及控件使用向导文档的汉化,总汉化90%以上!
TeeChart for .NET中文版让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。TeeChart for .NET中文版具有易上手,使用方便,稳定性好,性价比高,价格优惠等优势,并且针对Web应用提供无限制服务器分发授权方式,非常有利于产品集成。
图表导出是指将图表组件产生的图形转换为某种格式或以文件形式保存或复制到剪贴板上。Tee Chart Pro v7提供了丰富的转换格式,图形可导出的格式有: Native tee、PNG、GIF、BMP、WMF、EMF、JPEG、PCX、PDF、EPS、VML、SVG、GDI+等,数据导出的格式有:Native(二进制或文本)tee、文本(CSV)、XML、Excel、HTML表等。
通过调用图表组件的方法导出
Tee Chart Pro v7为导出图表提供了多种方法。在程序运行过程中,可以通过调用图表组件有关复制与保存位图文件的方法实现图表导出。组件中的方法可分为两组,一组是保存为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文件,通过仔细分析发现,这些文件的作用就是将图表组件显示的图表导出为指定的格式。为将图形转换为指定格式,需将对应文件在用户程序的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)窗口及对应代码,由于该对话框与多个窗体有关,用户很难在短时内将其关系搞清楚,直接调用这个对话框出现的一些错误也不知如何处理,这里采用在图表编辑器的基础上实现调用导出对话框的功能,导出对话框设计阶段的界面如下图所示。
为了能够实现导出对话框的功能,这里提供一个最为简便且与直接调用效果完全相同的方法。在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列表框中显示的内容中只有三种导出类型,出现这种现象的原因是导出的每种格式都是需要源代码支持的,因此,在用户程序的uses段需加入下列引用:
TeePDFCanvas, TeeSVGCanvas, TeeVMLCanvas TeePSCanvas, TeePCX, TeeGIF, TeePNG TeeJPEG
上述引用加入后,需要重新启动计算机,然后再运行该程序,这时导出对话框的Picture选项卡的Format列表框显示的内容就发生变化——增加了新的格式,如下面右图所示:
导出对话框调用演示实例
导出对话框调用演示的设计阶段界面如下图所示。窗体上部是图表组件Chart1,下部的
Panel1上放置导出对话框和退出两个按钮Button2和Button1,以及图表编辑器组件ChartEditor1和定时器Timer1。
图表编辑器ChartEditor1是在Button2的OnClick事件中调用的,代码如导出对话框( Export Dialog)的调用中所示。定时器组件是考虑到Series1:TGaugeSeries是一个仪表组件,在任一时刻都只有一个值,所以在Timer1的OnTimer事件中用随机函数发生器产生0~100的一个整数,使得该组件在程序运行期间一直处于动态变化之中。下面是演示程序的源代码:
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//定时器事件中产生随机数驱动仪表盘 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;//执行组件 end; end.
注意:图表编辑器的Chart属性一定要设定为图表组件名,否则将调用失败。下图是导出的JPG、EPS、PCX和PDF格式效果示意图。
相关资料推荐:
上一章:单图表和多图表的预览和打印
下一章:以图表形式导出
=====================================
现TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在线订购,现在抢购可立享优惠!
关注慧聚IT微信公众号???,了解产品的最新动态及最新资讯。