AW: Canvas RoundRect aber wie
Dann beginn halt mit einem Rectangle. Die ersten vier Parameter sind nämlich identisch. Und dann beginnst du mit ganz kleinen Zahlen (2 oder 3) für X3 und Y3.
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: http://docwiki.embarcadero.com/Libra...nvas.RoundRect
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 14:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz