Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#15

Re: transparentes formular in D3

  Alt 23. Mär 2005, 22:06
Dann gehts mit folgender Funktion
Delphi-Quellcode:
function SetFormTransparent(AFormHandle: HWnd; ATransparentColor: TColor): Boolean;
const
  WS_EX_LAYERED = $00080000;
  LWA_COLORKEY = $00000001;
var LStyle: Integer;
    LDLLHandle: Cardinal;
    LSetLayerdProc: function (Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; stdcall;
begin
  LDLLHandle := LoadLibrary('user32.dll');
  if LDLLHandle <> 0 then
  begin
    @LSetLayerdProc := GetProcAddress(LDLLHandle, 'SetLayeredWindowAttributes');
    if Assigned(LSetLayerdProc) then
    begin
      LStyle := GetWindowLong(AFormHandle, GWL_EXSTYLE);
      SetWindowLong(AFormHandle, GWL_EXSTYLE, LStyle or WS_EX_LAYERED);

      result := LSetLayerdProc(AFormHandle, ColorToRGB(ATransparentColor), 0, LWA_COLORKEY);
    end else result := False;
    FreeLibrary(LDLLHandle);
  end else result := False;
end;
Du musst die Farbei deines Forms auf eine Farbe setzen die im Bild nicht vorkommt, und dann obige funktion mit dieser Farbe aufrufen.

Beispiel:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  color := clFuchsia; //Farbe des Forms auf Rosa setzen (Rosa sollte also nicht im Bild vorkommen)
  SetFormTransparent(handle, Color); //Und dann Rosa als Transparenztsfarbe setzen
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat