Hier die versprochene Demo.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
Alpha: Boolean;
begin
Bit := TBitmap32.Create;
LoadPNGintoBitmap32(Bit, ExtractFilePath(ParamStr(0)) + '
test.png', Alpha);
setWindowLong(
Handle, GWL_EXSTYLE,
getWindowLong(
Handle, GWL_EXSTYLE)
or WS_EX_LAYERED
{or WS_EX_TRANSPARENT});
// WS_EX_TRANSPARENT macht das Fenster für Mausklicks transparent
BlendF.BlendOp := AC_SRC_OVER;
BlendF.BlendFlags := 0;
BlendF.SourceConstantAlpha := 255;
BlendF.AlphaFormat := AC_SRC_ALPHA;
P := Point(0, 0);
Size.cx := Bit.Width;
Size.cy := Bit.Height;
UpdateLayeredWindow(
Handle, 0,
nil, @Size, Bit.Handle, @P, 0, @BlendF, ULW_ALPHA);
end;
Ich verwende hier für den Alphakanal die GR32-Lib (ist einfach einfach
), aber es ist natürlich auch per
WinAPI/
VCL möglich.