Ich habe folgendes probiert:
Code: Alles auswählen
AplphaBlend := True;
AlphaBlendValue := 0;
Code: Alles auswählen
AplphaBlend := True;
AlphaBlendValue := 0;
Code: Alles auswählen
procedure TAboutForm.FormCreate(Sender: TObject);
var
x1, x2, y1, y2 : Integer;
const
r : Integer= 25;
begin
Caption := '';
LabelTime.Caption := TimeToStr(Time);
x1 := 90; y1 := 90; x2 := Width - 90; y2 := Height - 90;
FRegion := CreateRoundRectRgn(5, 10, Width - 10, Height - 10, Width, Height);
if FRegion <> 0 then begin
Reg := CreateRoundRectRgn(x1 - r, y1 - r, x1 + r, y1 + r, r * 2, r * 2);
CombineRgn(FRegion, FRegion, Reg, RGN_DIFF);
Reg := CreateRoundRectRgn(x1 - r, y2 - r, x1 + r, y2 + r, r * 2, r * 2);
CombineRgn(FRegion, FRegion, Reg, RGN_DIFF);
Reg := CreateRoundRectRgn(x2 - r, y1 - r, x2 + r, y1 + r, r * 2, r * 2);
CombineRgn(FRegion, FRegion, Reg, RGN_DIFF);
Reg := CreateRoundRectRgn(x2 - r, y2 - r, x2 + r, y2 + r, r * 2, r * 2);
CombineRgn(FRegion, FRegion, Reg, RGN_DIFF);
SetWindowRgn(Handle, FRegion, True);
end;
DC := GetWindowDC(Handle);
end;
Code: Alles auswählen
procedure MakeFormTransparent(Form: TScrollingWinControl);
var
AControl: TControl;
A, Margin, X, Y, CtlX, CtlY: integer;
ClientRgn, FullRgn, CtlRgn: HRGN;
begin
with Form do begin
Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn(X, Y, X + ClientWidth, Y + ClientHeight);
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF);
for A := 0 to ControlCount - 1 do begin
AControl := Controls[A];
if (AControl is TWinControl) or (AControl is TGraphicControl) then begin
with AControl do begin
if Visible then begin
CtlX := X + Left;
CtlY := Y + Top;
CtlRgn := CreateRectRgn(CtlX, CtlY, CtlX + Width, CtlY + Height);
CombineRgn(FullRgn, FullRgn, CtlRgn, RGN_OR);
end;
end;
end;
end;
SetWindowRgn(Form.Handle, FullRgn, True);
end;
end;
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
MakeFormTransparent(Form1);
end;
Dies ist mir bekannt, nur wird da alles transparent, inklusive aufgesetzte Komponenten und alles was man ins Canvas zeichnet.fliegermichl hat geschrieben: Sa 5. Aug 2023, 09:27 Du kannst im Objektinspektor des Formulares Alphablend auf true stellen und je kleiner der Wert in AlphablendValue ist, um so durchsichtiger wird das Formular.
Dies sind mir nach einer Variante für Windows aus.Soner hat geschrieben: Sa 5. Aug 2023, 23:32 Du musst eine Farbe als Transparenzfarbe definieren. Alles was du mit dieser Farbe zeichnest wird durchsichtig.
Ich habe mir immer gefragt warum haben die LCR-Programmierer Alphablending als Eigenschaft hinzugefügt aber Colorkey nicht.
Hier wird gezeigt wie es gemacht wird.
Wolltest du nicht Lösung für Windows?Mathias hat geschrieben: Sa 5. Aug 2023, 23:39Dies sind mir nach einer Variante für Windows aus.Soner hat geschrieben: Sa 5. Aug 2023, 23:32 Du musst eine Farbe als Transparenzfarbe definieren. Alles was du mit dieser Farbe zeichnest wird durchsichtig.
Ich habe mir immer gefragt warum haben die LCR-Programmierer Alphablending als Eigenschaft hinzugefügt aber Colorkey nicht.
Hier wird gezeigt wie es gemacht wird.