Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#7

Re: AlphaBlend für Delphi 5 Prof.

  Alt 7. Sep 2005, 17:09
gut,

und weißt du noch, wie ich alles in eine Unit packe, sodass ich nur noch im Uses-Teil die Unit einbinden muss und dann nur noch
  MakeTransparent(Handle, 100); sagen muss ?

[edit]Ich meine, ich habe ein Projekt und muss es nur noch einbidnen und aufrufen. [/edit]

Die bisherige Unit:
Delphi-Quellcode:
unit trans;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

implementation

type
    TSetLayeredWindowAttributes = function (
    hwnd : HWND; // handle to the layered window
    crKey : TColor;// specifies the color key
    bAlpha : byte;// value for the blend function
    dwFlags : DWORD// action
    ): BOOL; stdcall;

const
  WS_EX_LAYERED = $80000;
  LWA_COLORKEY = 1;
  LWA_ALPHA = 2;

procedure MakeTransparent(AHandle : THandle; AValue : byte = 0);
var
  Info: TOSVersionInfo;
  SetLayeredWindowAttributes: TSetLayeredWindowAttributes;
begin
//Check Windows version
Info.dwOSVersionInfoSize := SizeOf(Info);
GetVersionEx(Info);
if (Info.dwPlatformId = VER_PLATFORM_WIN32_NT) and
(Info.dwMajorVersion >= 5) then
begin
SetLayeredWindowAttributes := GetProcAddress(GetModulehandle(user32),'SetLayeredWindowAttributes');
if Assigned(SetLayeredWindowAttributes) then
begin
SetWindowLong(AHandle, GWL_EXSTYLE, GetWindowLong(AHandle, GWL_EXSTYLE) or WS_EX_LAYERED);
//Make form transparent
SetLayeredWindowAttributes(AHandle, 0, AValue, LWA_ALPHA);
end;
end;
end;

end.
  Mit Zitat antworten Zitat