Ich habe gerade nicht die Zeit es zu testen, aber gehe ich Recht in der Annahme dass das ganz funktioniert wie mein Kram
http://www.bummisoft.de/download/transtest.zip
Die Komponenten reichen die Malroutine durch an das Hauptfenster und das sieht ähnlich aus wie dieser Code?
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
var
DestPoint, srcPoint:TPoint;
winSize:TSize;
DC : HDC;
blendfunc : BLENDFUNCTION;
Owner : HWnd;
curWinStyle:Integer;
p:TGPPen;
g:TGPGraphics;
exStyle:Dword;
begin
if not Assigned(Fbackimage)
then Exit;
prep;
DC := GetDC(0);
try
winSize.cx := width;
winSize.cy := Height;
srcPoint.x := 0;
srcPoint.y := 0;
DestPoint := BoundsRect.TopLeft;
exStyle := GetWindowLongA(
handle, GWL_EXSTYLE);
if (exStyle
and WS_EX_LAYERED = 0)
then
SetWindowLong(
handle, GWL_EXSTYLE, exStyle
or WS_EX_LAYERED);
With blendFunc
do
begin
AlphaFormat := 1;
//=AC_SRC_ALPHA;
BlendFlags := 0;
BlendOp := AC_SRC_OVER;
SourceConstantAlpha := 255 - FAlphaValue;
// here you can set Alpha
end;
UpdateLayeredWindow(
Handle,
DC, @DestPoint, @winSize, Fbackimage.Canvas.Handle, @srcPoint,FSheetColor, @blendFunc, 2);
//=ULW_ALPHA
finally
ReleaseDC(0,
DC);
end;
end;