unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  BGRAGraphicControl, BGRABitmap, BCTypes, BGRABitmapTypes;

type

  { TForm1 }

  TForm1 = class(TForm)
    BGRAGraphicControl1: TBGRAGraphicControl;
    Timer1: TTimer;
    procedure BGRAGraphicControl1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
    bkg: TBGRABitmap;
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.BGRAGraphicControl1Redraw(Sender: TObject; Bitmap: TBGRABitmap
  );
var
  i: integer;
  bmp: TBGRABitmap;
begin
  //Bitmap.Fill(BGRABlack);
  Bitmap.FillTransparent;

  for i:= 0 to Bitmap.Width -1 do
  begin
    Bitmap.DrawVertLine(i,{Random(Bitmap.Height)}0,Random(Bitmap.Height),BGRA(255,255,255,Random(25)));
    Bitmap.DrawVertLine(i,Random(Bitmap.Height),Random(Bitmap.Height),BGRA(255,255,255,Random(50)));
  end;

  bmp := Bitmap.FilterBlurMotion(10,270,True) as TBGRABitmap;
  BGRAReplace(bmp, bmp.FilterBlurRadial(1,rbFast));
  Bitmap.BlendImageOver(0,0,bkg,boLinearBlend);
  Bitmap.BlendImageOver(0,0,bmp,boLinearBlend);
  bmp.Free;
end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  Timer1.Enabled := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  bkg := TBGRABitmap.Create('Lighthouse.jpg');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  bkg.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  BGRAGraphicControl1.DiscardBitmap;
end;

end.