Transparentcolor

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем TRT, 13 мар 2008.

  1. TRT

    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)
     
  2. TRT

    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;
     

Поделиться этой страницей