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