unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Windows, Win32Extra, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
BGRABitmap,BGRABitmapTypes;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
//bmp: TBGRABitmap;
bfBlend: TBlendFunction;
pPos: TPoint;
sSize: TSize;
dwStyle: DWORD;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
PNG: TBGRABitmap;
begin
FormStyle := fsSystemStayOnTop;
Borderstyle := bsNone;
Position := poScreenCenter;
PNG := TBGRABitmap.Create;
try
//PNG.LoadFromFile('splash.png'); // must be a premultiplied PNG
PNG.SetSize(Width,Height);
PNG.FillEllipseAntialias(100,100,100,100,BGRA(255,255,255,150));
PNG.FillEllipseAntialias(175,100,100,100,BGRA(255,0,0,150));
PNG.FillEllipseAntialias(250,100,100,100,BGRA(0,0,0,150));
dwStyle := GetWindowLongA(Self.Handle, GWL_EXSTYLE);
if (dwStyle and WS_EX_LAYERED = 0) then
SetWindowLong(Self.Handle, GWL_EXSTYLE, dwStyle or WS_EX_LAYERED or WS_EX_TOPMOST);
pPos := Point(0, 0);
sSize.cx := PNG.Width;
sSize.cy := PNG.Height;
bfBlend.BlendOp := AC_SRC_OVER;
bfBlend.BlendFlags := 0;
bfBlend.SourceConstantAlpha := 255;
bfBlend.AlphaFormat := AC_SRC_ALPHA;
UpdateLayeredWindow(Self.Handle, 0, nil, @sSize,
PNG.Bitmap.Canvas.Handle, @pPos, 0, @bfBlend, ULW_ALPHA);
finally
PNG.Free;
end;
end;
end.