Danke für die Tipps, ich habe sie umgesetzt und es sieht auc besser aus, allerdings für mich noch zu pixelig.
Ich werde wohl noch mit den Variablen rumspielen müssen.
Mein jetztiger Code:
Delphi-Quellcode:
procedure TMyPanel.SetRegion(AControl : TWinControl; X1, Y1, X2, Y2, ARadius : Integer);
var
rgn: HRGN;
begin
try
rgn := CreateRoundRectRgn(X1,
Y1,
AControl.Width - X2,
AControl.Height - Y2,
ARadius,ARadius);
SetWindowRgn(AControl.Handle, rgn, True);
finally
DeleteObject(rgn);
end;
end;
procedure TMyPanel.Paint;
begin
...
case FPanelStyle of
...
psRoundRect: begin
Canvas.RoundRect(Canvas.Pen.Width div 2,
Canvas.Pen.Width div 2,
Width - Canvas.Pen.Width div 3,
Height - Canvas.Pen.Width div 3,
FPanelRounding, FPanelRounding);
SetRegion(Self, 0, 0,
-1, -1, FPanelRounding);
end;
...
end;
Könnte man sonst noch etwas optimieren?
Wenn ich jetzt noch Antialiasing haben möchte, muss ich doch auf Alternativen wie z.B. Grafic32 oder
GDI+ umsteigen oder?
Zu denken, was wir hätten tun können, ist eine Tätigkeit, die uns zu denken geben sollte...