Transparentcolor

  • Автор темы TRT
  • Дата начала
T

TRT

Подскажите пожалуйста как сделать указанный мною цвет прозрачным через системную библиотеку user32.dll с помощью таких функций:

const
TransparentColor = clLime;
TransparentPercent = 80;
WS_EX_LAYERED = $80000;
WS_EX_TRANSPARENT = $20;
LWA_COLORKEY = 1;
LWA_ALPHA = 2;
GWL_EXSTYLE = (-20);

function SetLayeredWindowAttributes(hwnd: HWND; crKey: TColor; bAlpha: BYTE; dwFlags: DWORD): Boolean;
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint;
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint;

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED)
SetLayeredWindowAttributes(Handle, TransparentColor,(255 * TransparentPercent) / 100, LWA_COLORKEY)
 
T

TRT

Вопрос снимается :) проблему решил таким образом:

const
TRANSPARENT_COLOR = clLime;
WS_EX_LAYERED = $80000;
GWL_EXSTYLE = (-20);
LWA_COLORKEY = 1;
LWA_ALPHA = 2;

function SetLayeredWindowAttributes(hwnd: HWND; crKey: TColor; bAlpha: byte; dwFlags: DWORD): BOOL; stdcall;
external 'user32.dll';

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Color := TRANSPARENT_COLOR;
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, TRANSPARENT_COLOR, 0, LWA_COLORKEY);
end;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!