本教程概述了,以各种不同的格式导出了TeeCharts,并导入了TeeChart自己的.tee格式图表模板。在您的TeeChart安装文件夹下面的Examples文件夹中,可以看到TeeChart示例代码。
目录 | |
12.1 导出图表 可用格式 导出示例 12.2 导出图像 JPEG GIF PNG 12.3导出数据 Text, XML, HTML, XLS、XLSX | 12.4 TeeChart的'Tee' 模版和数据导出导入格式 Tee文件 12.5 导入 导入Tee格式文件 导入Tee文件文件示例 ChartWebSource 和SeriesTextSource 其他数据源 |
12.1 导出图表
12.1.1 可用格式
可用的导出格式。所有格式都可以复制到文件或剪贴板中。有些格式可能会被复制到流中。
图像格式 |
| 数据格式 |
|
(BMP) | CopyToClipboardBitmap | Text | TSeriesDataText |
(WMF) | CopyToClipboardMetafile | XML | TSeriesDataXML |
BMP | TBMPExportFormat | HTML | TSeriesDataHTML |
JPEG | SaveChartToJPEGFile | Excel | TSeriesDataXLS |
WMF | TEMFExportFormat.Enhanced (false) |
|
|
EMF | TEMFExportFormat | 其它格式 |
|
GIF | TGIFExportFormat | TEE (TeeChart) | SaveChartToFile |
PNG | TPNGExportFormat |
|
|
PCX | TPCXExportFormat |
|
|
VML (HTML) | TVMLExportFormat |
|
|
TPDFExportFormat |
|
| |
SVG | TSVGExportFormat |
|
|
EPS | TEPSExportFormat |
|
|
Flex(Flash) | TFlexExportFormat |
|
|
VRML 3D | TVRMLExportFormat |
|
|
XAML (WPF) | TXAMLExportFormat |
|
|
Tee格式是一种灵活的格式,存储图表属性信息,并可选地存储图表数据。文件很小(依赖于数据),对于使用网络来更新基于客户机的图表来说是理想的。
在运行时,你可以通过使用Chart TeeExport方法.来显示导出对话框
示例: TeeExport( Self, Chart1 );
12.1.2 导出示例
导出到一个文件是非常简单的,在大多数情况下,您只需要定义目标文件名。
示例:
if SaveDialog1.Execute then
Chart1.SaveToBitmapFile(SaveDialog1.FileName);
12.2 导出图像
12.2.1 JPEG
JPEG文件的导出为了速度和质量提供了额外的参数。请参阅Examples文件夹中包含的JPEG demo。TeeChart为了避免非jpeg应用程序的内存开销,该导出方法没有被原生的包括在内。
示例
//您需要在项目的Uses部分中包含Delphi JPEG单元
//将图表的名字传递给该函数。我们已经修正了这些参数。
//在演示中,它们被作为选项提供给用户
//在窗体上放置一个图表(Chart1),并用数据填充它。
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
With GetChartJPEG(Chart1) do
try
SaveToFile('c:\temp\myJPEGChart.jpg'); { <--将JPEG保存到磁盘}
finally
Free; { <--释放临时JPEG对象}
end;
end;
Function GetChartJPEG(AChart:TCustomChart):TJPEGImage;
var tmpBitmap:TBitmap;
begin
result:=TJPEGImage.Create; { <-- 创建一个TJPEGImage }
tmpBitmap:=TBitmap.Create; { <--创建一个临时的TBitmap }
try
tmpBitmap.Width :=AChart.Width; { <--设置bitmap尺寸}
tmpBitmap.Height:=AChart.Height;
{ 在临时Bitmap上绘制图表... }
AChart.Draw(tmpBitmap.Canvas,Rect(0,0,tmpBitmap.Width,tmpBitmap.Height));
{设置所需的JPEG选项... }
With result do
begin
GrayScale :=False;
ProgressiveEncoding :=True;
CompressionQuality :=50; // % 0 - 100
PixelFormat :=jf24bit; // 或 jf8bit
ProgressiveDisplay :=True;
Performance :=jpBestQuality; // 或 jpBestSpeed
Scale :=jsFullSize; // 或 jsHalf, jsQuarter,jsEighth
Smoothing :=True;
{ 将临时Bitmap复制到JPEG图像上... }
Assign(tmpBitmap);
end;
finally
tmpBitmap.Free; { <-- 释放临时Bitmap }
end;
end;
Performance(性能)、jpegBestQuality(jpeg最佳质量)和CompressionQuality(压缩质量)百分比(高值少压缩),将使文件更大,因此在网络上传输的速度更慢——不过,质量更好!您需要决定最佳的平衡以适合您的应用程序。
12.2.2 GIF
GIF的支持包括在Anders Melander的Delphi 的GIFImage 类((c)1997-99年的Anders Melander)TeeChart惠赠中。GIF类的完整文档超出了TeeChart的文档的范围。Anders已经向Jedi 项目捐赠了GIFImage,他现在为这个项目协调文档和支持。
TeeChart提供了创建GIF图表图像的方法,但是为了使用使用GIFLZW编码的图像,你应该使用Unisys来检查你的授权位置。可供替代的RLE编码不受制于Unisys的许可。
使用TeeChart对话的示例:
Uses TeeGIF, TeExport;
procedure TGIFExportForm.Button1Click(Sender: TObject);
begin
TeeSavePanel(TGIFExportFormat,Chart1);
end;
代码示例
Uses TeeGIF, GIFImage;
procedure TForm1.Button1Click(Sender: TObject);
var tmpGIF : TGIFImage;
begin
tmpGIF:=TGIFImage.Create;
With tmpGIF do
begin
Compression:=gcLZW;
DitherMode:=dmStucki;
ColorReduction:=rmQuantizeWindows;
Assign(Chart1.TeeCreateBitmap(Chart1.Color,Rect(0,0,Chart1.Width,Chart1.Height)));
SaveToFile('c:\tempCharts\Chart1.gif');
end;
end;
12.2.3 PNG
要使用PNG图像格式,需要在\Windows\System文件夹或路径中有LPng.DLL文件。PNG提供了一种被主要浏览器支持的压缩图像格式。
示例
Uses TeePNG, TeExport;
procedure TPNGExportForm.Button1Click(Sender: TObject);
begin
TeeSavePanel(TPNGExportFormat,Chart1);
end;
12.3 导出数据
TeeStore单元包括TSeriesData组件及其后代的定义:
Text | TSeriesDataText |
XML | TSeriesDataXML |
HTML | TSeriesDataHTML |
Excel | TSeriesDataXLS |
上面的组件可以创建并关联到一个图表序列,它们可以将图表序列的数据导出为文件、流或剪贴板。
下面的示例将数据从图表序列导出到HTML表:
With TSeriesDataHTML.Create(Chart1,Series1) do
Begin
IncludeHeader:=True;
SaveToFile('c:\tempdata\Series1HTMLData.txt');
end;
以上一个随机数据集的输出如下:
Series1 |
308 |
267 |
170 |
192 |
284 |
253 |
265 |
296 |
335 |
454 |
Excel导出代码的一个例子:
try
xlsexp := TSeriesDataXLSObject.Create(Chart1);
xlsexp.IncludeHeader := True;
xlsexp.IncludeIndex := True;
xlsexp.SaveToFile('c:\temp\myExcelFile.xlsx');
finally
xlsexp.Free;
end;
12.4 TeeChart的Tee模板和数据导出/导入格式
12.4.1 Tee files
Tee文件是TeeChart的用于保存图表和数据的自有模板格式。修改后的图表属性保存在模板中,并在模板导入到新图表时进行复制。
优势:
- Tee文件的尺寸非常小,在大多数情况下,它比纯粹的图形格式更有优势。(更快).
- 模板的目标图表是“生动的”,它可以被缩放和滚动,并修改它的属性。
- 根据您的喜好,数据可以随意地包含在tee模板中。
SaveChartToFile / SaveChartToStream的声明:
procedure SaveChartToFile(AChart:TCustomChart; Const AName: String; IncludeData: Boolean);
procedure SaveChartToStream(AChart:TCustomChart; AStream: TStream; IncludeData: Boolean);
{:更多信息请参见TeeStore单元}
示例
//将单元teestore添加到工程的“Uses”部分
With SaveDialog1 do
begin
Filter:='Teefiles|*.tee';
if Execute then
SaveChartToFile(Chart1,SaveDialog1.FileName,True);
end;
12.5 导入
12.5.1 导入Tee 格式文件
从本地文件源或http数据源导入一个保存的Tee文件。12.5.2 导入示例
示例
//从文件导入
procedure TForm1.Button1Click(Sender: TObject);
var tmpChart : TCustomChart;
begin
Chart1.Free; //假设Chart1已经在窗体上了
tmpChart:=TChart.Create(Self);
With OpenDialog1 do
begin
Filter:= 'Teefiles|*.tee';
if Execute then
LoadChartfromFile(tmpChart,OpenDialog1.FileName);
end;
Chart1 := tmpChart as TChart;
With Chart1 do
begin
Parent:=Self;
end;
end;
您还可以从URL中导入一个TeeChart的文件,LoadChartFromURL。
12.5.3 ChartWebSource和SeriesTextSource
Tee文件可以通过LoadChartFromURL方法或ChartWebSource组件从远程web源导入。可以通过TSeriesTextSource组件导入CSV数据。请参阅Internet应用程序教程获得更多信息。
12.5.4 其它数据源
有关从其他数据库信息来源导入数据的信息,请参见数据库访问教程。
第十二章 完