lazarus/components/tachart/tutorials/background/main.pas

129 lines
3.3 KiB
ObjectPascal

unit main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, TAGraph, TASeries, TASources, Forms, Controls,
Graphics, Dialogs, TADrawUtils;
type
{ TForm1 }
TForm1 = class(TForm)
Chart1: TChart;
Chart1BarSeries1: TBarSeries;
ListChartSource1: TListChartSource;
procedure Chart1BeforeCustomDrawBackground(ASender: TChart;
ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean
);
procedure Chart1BeforeCustomDrawBackWall(ASender: TChart;
ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean
);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ private declarations }
FBackImage: TPicture;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses
IntfGraphics;
//{$R splash_logo.res}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
FBackImage := TPicture.Create;
FBackImage.LoadFromFile('..\..\..\..\images\splash_logo.png');
// above path assumes standard Lazarus installation
// or, use resources:
//FBackImage.LoadFromResourceName(HInstance, 'splash_logo');
// Don't forget to activate the "{$R" directive above.
end;
procedure TForm1.Chart1BeforeCustomDrawBackWall(ASender: TChart;
ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean);
var
bmp: TBitmap;
img: TLazIntfImage;
begin
img := TLazIntfImage.Create(0, 0);
try
bmp := TBitmap.Create;
try
bmp.SetSize(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);
bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width, bmp.Height), FBackImage.Graphic);
img.LoadFromBitmap(bmp.Handle, bmp.MaskHandle);
finally
bmp.Free;
end;
ADrawer.PutImage(ARect.Left, ARect.Top, img);
ADoDefaultDrawing := false;
finally
img.Free;
end;
end;
(* --------------- deprecated, was in use before Laz 2.1 -----------------------
procedure TForm1.Chart1BeforeDrawBackWall(ASender: TChart; ACanvas: TCanvas;
const ARect: TRect; var ADoDefaultDrawing: Boolean);
begin
ACanvas.StretchDraw(ARect, FBackImage.Graphic);
ADoDefaultDrawing := false;
end;
----------------------------------------------------------------------------- *)
procedure TForm1.Chart1BeforeCustomDrawBackground(ASender: TChart;
ADrawer: IChartDrawer; const ARect: TRect; var ADoDefaultDrawing: Boolean);
var
bmp: TBitmap;
img: TLazIntfImage;
begin
img := TLazIntfImage.Create(0, 0);
try
bmp := TBitmap.Create;
try
bmp.SetSize(ARect.Right - ARect.Left, ARect.Bottom - ARect.Top);
bmp.Canvas.GradientFill(Rect(0, 0, bmp.Width, bmp.Height), clSkyBlue, clWhite, gdVertical);
img.LoadFromBitmap(bmp.Handle, bmp.MaskHandle);
finally
bmp.Free;
end;
ADrawer.PutImage(ARect.Left, ARect.Top, img);
ADoDefaultDrawing := false;
finally
img.Free;
end;
end;
(* --------------- deprecated, was in use before Laz 2.1 -----------------------
procedure TForm1.Chart1BeforeDrawBackground(ASender: TChart; ACanvas: TCanvas;
const ARect: TRect; var ADoDefaultDrawing: Boolean);
begin
ACanvas.GradientFill(ARect, clSkyBlue, clWhite, gdVertical);
ADoDefaultDrawing := false;
end;
----------------------------------------------------------------------------- *)
procedure TForm1.FormDestroy(Sender: TObject);
begin
FBackImage.Free;
end;
end.