procedure TfrmMain_Maske.FormCreate(Sender: TObject);
var Alpha : Boolean;
I : Integer;
ObenLinks, ObenMitte, ObenRechts,
RandLinks, RandRechts,
UntenLinks, UntenMitte, UntenRechts : TBitmap32;
ObenLinksStream, ObenMitteStream, ObenRechtsStream,
RandLinksStream, RandRechtsStream,
UntenLinksStream, UntenMitteStream, UntenRechtsStream : TResourceStream;
begin
// Hintergrundbild erstellen
Background := TBitmap32.Create;
Background2 := TBitmap32.Create;
// Formkacheln erstellen
ObenLinks := TBitmap32.Create;
ObenMitte := TBitmap32.Create;
ObenRechts := TBitmap32.Create;
RandLinks := TBitmap32.Create;
RandRechts := TBitmap32.Create;
UntenLinks := TBitmap32.Create;
UntenMitte := TBitmap32.Create;
UntenRechts := TBitmap32.Create;
try
// Formkacheln laden
ObenLinksStream := TResourceStream.Create(Hinstance, '
ObenLinks', PChar('
RC_DATA'));
ObenMitteStream := TResourceStream.Create(Hinstance, '
ObenMitte', PChar('
RC_DATA'));
ObenRechtsStream := TResourceStream.Create(Hinstance, '
ObenRechts', PChar('
RC_DATA'));
RandLinksStream := TResourceStream.Create(Hinstance, '
RandLinks', PChar('
RC_DATA'));
RandRechtsStream := TResourceStream.Create(Hinstance, '
RandRechts', PChar('
RC_DATA'));
UntenLinksStream := TResourceStream.Create(Hinstance, '
UntenLinks', PChar('
RC_DATA'));
UntenMitteStream := TResourceStream.Create(Hinstance, '
UntenMitte', PChar('
RC_DATA'));
UntenRechtsStream := TResourceStream.Create(Hinstance, '
UntenRechts', PChar('
RC_DATA'));
LoadPNGIntoBitmap32(ObenLinks, ObenLinksStream, Alpha);
LoadPNGIntoBitmap32(ObenMitte, ObenMitteStream, Alpha);
LoadPNGIntoBitmap32(ObenRechts, ObenRechtsStream, Alpha);
LoadPNGIntoBitmap32(RandLinks, RandLinksStream, Alpha);
LoadPNGIntoBitmap32(RandRechts, RandRechtsStream, Alpha);
LoadPNGIntoBitmap32(UntenLinks, UntenLinksStream, Alpha);
LoadPNGIntoBitmap32(UntenMitte, UntenMitteStream, Alpha);
LoadPNGIntoBitmap32(UntenRechts, UntenRechtsStream, Alpha);
// FormSkin in Kacheln auf die Form zeichnen
// Oben links
Background.Draw(0,0, ObenLinks);
// Oben Mitte
for I := ObenLinks.Width
to Self.ClientWidth-ObenRechts.Width
do
Background.Draw(I,0, ObenMitte);
// Oben Rechts
Background.Draw(Self.ClientWidth-ObenRechts.Width,0, ObenRechts);
finally
ObenLinksStream.Free;
ObenMitteStream.Free;
ObenRechtsStream.Free;
RandLinksStream.Free;
RandRechtsStream.Free;
UntenLinksStream.Free;
UntenMitteStream.Free;
UntenRechtsStream.Free;
end;
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 := Background.Width;
Size.cy := Background.Height;
UpdateLayeredWindow(
Handle, 0,
nil, @Size, Background.Handle, @P, 0, @BlendF, ULW_ALPHA);
Left := 0;
Top := 0;
end;