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