![]() |
AW: Canvas RoundRect aber wie
Dann beginn halt mit einem
![]() Und mit "was falsches" kann hier auch keiner was anfangen. Es ist nicht "falsch", es ist nur das, was du gesagt hast. Anhand der Eingabewerte und des sich ergebenden Bildes kannst du durch kleinere Veränderungen selbst lernen, was was ist. Wenn du nicht in der Lage bist, ein Rechteck zu zeichnen, kommen wir hier nicht weiter. |
AW: Canvas RoundRect aber wie
Liste der Anhänge anzeigen (Anzahl: 1)
Ich versuche es nochmal mit ein bisschen guten Willen und Beispielquelltext.
Bitte einfach ein neues VCL-Projekt erstellen, einen Paint-Eventhandler zusammenklicken und folgenden Quelltext reinkopieren:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
var R: TRect; X, Y: Integer; begin Self.Canvas.Pen.Width := 3; Self.Canvas.Brush.Color := clWebYellowGreen; Self.Canvas.Pen.Color := clWebGreen; R := Self.ClientRect; R.Offset(0, R.Height div 2); X := Round(R.Width * 0.1); Y := Round(R.Height * 0.1); R.Inflate(-X, -Y); Self.Canvas.Rectangle(R.Left, R.Top, R.Right, R.Bottom); Self.Canvas.Brush.Color := clWebLavender; Self.Canvas.Pen.Color := clWebChocolate; X := Round(R.Width * 0.1); Y := Round(R.Height * 0.1); R.Inflate(-X, -Y); Self.Canvas.RoundRect(R.Left, R.Top, R.Right, R.Bottom, 30, 30); Self.Canvas.Brush.Color := clWebLightYellow; Self.Canvas.Pen.Color := clWebFirebrick; X := Round(R.Width * 0.1); Y := Round(R.Height * 0.1); R.Inflate(-X, -Y); Self.Canvas.RoundRect(R.Left, R.Top, R.Right, R.Bottom, 10, 10); Self.Canvas.Brush.Color := clWebLightSlateGray; Self.Canvas.Pen.Color := clWebOrchid; X := Round(R.Width * 0.1); Y := Round(R.Height * 0.1); R.Inflate(-X, -Y); Self.Canvas.RoundRect(R.Left, R.Top, R.Right, R.Bottom, X, Y); end; |
AW: Canvas RoundRect aber wie
Falls jemand die Hilfe immer noch nicht gefunden hat:
![]() Benötigt werden nur 2 Punkte zum Zeichnen eines Rechtecks.
Delphi-Quellcode:
Für ein Rechteck mit runde Ecken muss man zusätzlich noch den Breite und Höhe der Rundungen festlegen.
PTL := ARect.TopLeft; // links oben
PBR := ARect.BottomRight; // rechts unten
Delphi-Quellcode:
Damit die unteren Ecken nicht sichtbar sind, vergrössert man das Rechteck um den Radius der unteren runden Ecken.
Rx := 10; // Radius einer runden Ecke horizontal
Ry := 5; // Radius einer rundne Ecke vertical Damit ragt das Rechteck aus dem Zeichenbereich hinaus.
Delphi-Quellcode:
Leider werden runde Excken, Kreisbögen oder schräge Linien nur unbefriedigend dargestellt.
{Rahmen}
Canvas.Pen {Inhalt} Canvas.Brush {Zeichnen} Canvas.RoundRect(PTL.X, PTL.y, PBR.x, PBR.y + Ry, Rx * 2, Ry * 2); Für bessere Qualität müssten die Zeichenwerkzeuge Pixel z.T. halbtransparent zeichnen. |
AW: Canvas RoundRect aber wie
Zitat:
|
AW: Canvas RoundRect aber wie
Zitat:
Das kann man gut mit GDI+ machen (SmoothingModeAntiAlias). Wenn man die unteren runden Ecken nicht braucht, reichen die beiden oberen Kreisbögen und die Basis-Linie - den Rest kann man von GDI+ ergänzen lassen (CloseFigure). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz