1 unit main;
2 {$mode objfpc}{$H+}
3 
4 interface
5 
6 uses
7   Classes, SysUtils, FileUtil, TAGraph, TASeries, TASources, Forms, Controls,
8   Graphics, Dialogs, TADrawUtils;
9 
10 type
11 
12   { TForm1 }
13 
14   TForm1 = class(TForm)
15     Chart1: TChart;
16     Chart1BarSeries1: TBarSeries;
17     ListChartSource1: TListChartSource;
18     procedure Chart1BeforeCustomDrawBackground(ASender: TChart;
19       ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean
20       );
21     procedure Chart1BeforeCustomDrawBackWall(ASender: TChart;
22       ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean
23       );
24     procedure FormCreate(Sender: TObject);
25     procedure FormDestroy(Sender: TObject);
26   private
27     { private declarations }
28     FBackImage: TPicture;
29   public
30     { public declarations }
31   end;
32 
33 var
34   Form1: TForm1;
35 
36 implementation
37 
38 {$R *.lfm}
39 
40 uses
41   IntfGraphics;
42 
43 //{$R splash_logo.res}
44 
45 { TForm1 }
46 
47 procedure TForm1.FormCreate(Sender: TObject);
48 begin
49   FBackImage := TPicture.Create;
50   FBackImage.LoadFromFile('..\..\..\..\images\splash_logo.png');
51   // above path assumes standard Lazarus installation
52 
53   // or, use resources:
54   //FBackImage.LoadFromResourceName(HInstance, 'splash_logo');
55   // Don't forget to activate the "{$R" directive above.
56 end;
57 
58 procedure TForm1.Chart1BeforeCustomDrawBackWall(ASender: TChart;
59   ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean);
60 var
61   bmp: TBitmap;
62   img: TLazIntfImage;
63 begin
64   img := TLazIntfImage.Create(0, 0);
65   try
66     bmp := TBitmap.Create;
67     try
68       bmp.SetSize(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);
69       bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width, bmp.Height), FBackImage.Graphic);
70       img.LoadFromBitmap(bmp.Handle, bmp.MaskHandle);
71     finally
72       bmp.Free;
73     end;
74     ADrawer.PutImage(ARect.Left, ARect.Top, img);
75     ADoDefaultDrawing := false;
76   finally
77     img.Free;
78   end;
79 end;
80 
81 (* --------------- deprecated, was in use before Laz 2.1 -----------------------
82 procedure TForm1.Chart1BeforeDrawBackWall(ASender: TChart; ACanvas: TCanvas;
83   const ARect: TRect; var ADoDefaultDrawing: Boolean);
84 begin
85   ACanvas.StretchDraw(ARect, FBackImage.Graphic);
86   ADoDefaultDrawing := false;
87 end;
88 ----------------------------------------------------------------------------- *)
89 
90 procedure TForm1.Chart1BeforeCustomDrawBackground(ASender: TChart;
91   ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean);
92 var
93   bmp: TBitmap;
94   img: TLazIntfImage;
95 begin
96   img := TLazIntfImage.Create(0, 0);
97   try
98     bmp := TBitmap.Create;
99     try
100       bmp.SetSize(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);
101       bmp.Canvas.GradientFill(Rect(0, 0, bmp.Width, bmp.Height), clSkyBlue, clWhite, gdVertical);
102       img.LoadFromBitmap(bmp.Handle, bmp.MaskHandle);
103     finally
104       bmp.Free;
105     end;
106     ADrawer.PutImage(ARect.Left, ARect.Top, img);
107     ADoDefaultDrawing := false;
108   finally
109     img.Free;
110   end;
111 end;
112 
113 (* --------------- deprecated, was in use before Laz 2.1 -----------------------
114 procedure TForm1.Chart1BeforeDrawBackground(ASender: TChart; ACanvas: TCanvas;
115   const ARect: TRect; var ADoDefaultDrawing: Boolean);
116 begin
117   ACanvas.GradientFill(ARect, clSkyBlue, clWhite, gdVertical);
118   ADoDefaultDrawing := false;
119 end;
120 ----------------------------------------------------------------------------- *)
121 
122 procedure TForm1.FormDestroy(Sender: TObject);
123 begin
124   FBackImage.Free;
125 end;
126 
127 end.
128 
129