Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#11

AW: AlphaBlend auf normale Controls

  Alt 12. Feb 2011, 14:03
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat