1 unit main;
2 
3 {$mode objfpc}{$H+}
4 
5 interface
6 
7 uses
8   SysUtils, Forms, Graphics, Dialogs, ComCtrls, TAGraph, TASeries, TAFuncSeries, Classes;
9 
10 type
11 
12   { TForm1 }
13 
14   TForm1 = class(TForm)
15     Chart1: TChart;
16     Chart1BarSeries1: TBarSeries;
17     Chart1FuncSeries1: TFuncSeries;
18     SaveDialog1: TSaveDialog;
19     ToolBar1: TToolBar;
20     tbSaveAsBMP: TToolButton;
21     tbSaveAsPNG: TToolButton;
22     tbCopyToClipboard: TToolButton;
23     tbSaveAsJPEG: TToolButton;
24     tbSaveAsSVG: TToolButton;
25     procedure Chart1FuncSeries1Calculate(const AX: Double; out AY: Double);
26     procedure FormCreate(Sender: TObject);
27     procedure tbCopyToClipboardClick(Sender: TObject);
28     procedure tbSaveAsBMPClick(Sender: TObject);
29     procedure tbSaveAsJPEGClick(Sender: TObject);
30     procedure tbSaveAsPNGClick(Sender: TObject);
31     procedure tbSaveAsSVGClick(Sender: TObject);
32   private
GetFileNamenull33     function GetFileName(const AExt: String): String;
34   end;
35 
36 var
37   Form1: TForm1;
38 
39 implementation
40 
41 {$R *.lfm}
42 
43 uses
44   TADrawerSVG, TADrawUtils, TADrawerCanvas;
45 
46 { TForm1 }
47 
48 procedure TForm1.Chart1FuncSeries1Calculate(const AX: Double; out AY: Double);
49 begin
50   AY := AX * AX / 2;
51 end;
52 
53 procedure TForm1.FormCreate(Sender: TObject);
54 var
55   i: Integer;
56 begin
57   RandSeed := 103489;
58   for i := 1 to 10 do
59     Chart1BarSeries1.AddXY(i, i * i / 2 + Random(6) + 1 + Random);
60   SaveDialog1.InitialDir := ExtractFilePath(Application.ExeName);
61 end;
62 
GetFileNamenull63 function TForm1.GetFileName(const AExt: String): String;
64 begin
65   with SaveDialog1 do begin
66     FileName := '';
67     DefaultExt := AExt;
68     if not Execute then Abort;
69     Result := FileName;
70   end;
71 end;
72 
73 procedure TForm1.tbCopyToClipboardClick(Sender: TObject);
74 begin
75   Chart1.CopyToClipboardBitmap;
76 end;
77 
78 procedure TForm1.tbSaveAsBMPClick(Sender: TObject);
79 begin
80   Chart1.SaveToBitmapFile(GetFileName('bmp'));
81 end;
82 
83 procedure TForm1.tbSaveAsJPEGClick(Sender: TObject);
84 begin
85   Chart1.SaveToFile(TJPEGImage, GetFileName('jpg'));
86 end;
87 
88 procedure TForm1.tbSaveAsPNGClick(Sender: TObject);
89 begin
90   Chart1.SaveToFile(TPortableNetworkGraphic, GetFileName('png'));
91 end;
92 
93 procedure TForm1.tbSaveAsSVGClick(Sender: TObject);
94 begin
95   Chart1.SaveToSVGFile(GetFilename('svg'));
96 end;
97 { or ...
98 var
99   fs: TFileStream;
100   id: IChartDrawer;
101 begin
102   fs := TFileStream.Create(GetFileName('svg'), fmCreate);
103   try
104     id := TSVGDrawer.Create(fs, true);
105     with Chart1 do
106       Draw(id, Rect(0, 0, Width, Height));
107   finally
108     fs.Free;
109   end;
110 end;   }
111 
112 end.
113 
114