![]() |
Halbkreis zeichnen auf Canvas
Hi
ich versuche auf einem Canvas einen Halbkreis zu zeichnen. bekannt sind zwei punkte...der halbkreis ist immer nach unten offen... kann ich damit Arc oder Pie so aufrufen das ein Halbkreis rauskommt? |
Re: Halbkreis zeichnen auf Canvas
Zitat:
|
Re: Halbkreis zeichnen auf Canvas
ja, ok, du hast auf meine frage korrekt geantwortet, habe ich hatte gedacht das "Wie?" sei bereits implizit dabei gewesen :-D
also nochmal ganz explizit: Wie geht es denn? |
Re: Halbkreis zeichnen auf Canvas
Delphi-Quellcode:
TCanvas.Pie + F1
Canvas.Pen.Color := 0;
canvas.Brush.COlor := ClYellow; Canvas.Ellipse (10,10,310,210); Canvas.Pen.Color := $FFFFFF;; canvas.Brush.COlor := ClGReen; Canvas.Pie (10,10,310,210, 310,110, 10,110); |
Re: Halbkreis zeichnen auf Canvas
Hallo Gereon,
wenn deine Punkte P3 (x1, y1) und P4 (x4, y4) sind und einen Halbkreis von P3 nach P4 (gegen den Uhrzeigersinn) aufspannen, dann bestimme zuerst den Mittelpunkt M (x, y) und den Radius r deines Halbkreises: x = (x4 - x3)/2, y = (y4 - y3)/2 und r = sqrt(sqr(x4 - x3) + sqr(y4 - y3))/2. Aus den gefundenen Größen kannst du dann das bounding rectangle des Kreises ermitteln, welches durch P1 und P2 aufgespannt wird: x1 = x - r, y1 = y - r und x2 = x + r, y2 = y + r. Jetzt hast du alle Parameter für die Methode Arc des Canvas. Du wirst aber nicht drum herum kommen, meine Anleitung zu überprüfen, da ich keine Garantie übernehmen kann... Grüße vom marabu |
Re: Halbkreis zeichnen auf Canvas
mein tipp der Hilfe:
Zitat:
Stimmt das so? also zwei punkte und radius? oder hab ich da was vertauscht?
Code:
Edit: BUG!!! der Delphi-Tag wird immer in Pre umgewandelt :(
Canvas.Pie(10,10,310,210,310,110,10,110);
// X1 Y1 X2 Y2 X2 Rad X1 Rad |
Re: Halbkreis zeichnen auf Canvas
Zitat:
allerdings bringt folgender Code schon fast das richtige ergebnis:
Delphi-Quellcode:
leider geht der halbkreis nach unten :(
Canvas.Pie(X1,Y1,X2,Y2,X1,(Y1+Y2) div 2,X2,(Y1+Y2) div 2);
edit: bei folgenden werten: X1 = 10 Y1 = 40 X2 = 90 Y2 = 50 |
Re: Halbkreis zeichnen auf Canvas
Hallo Gereon,
die Punkte müssen vorsortiert werden, damit der Kreis bzw. Kreisbogen richtig gezeichnet wird - von (X1, Y1) nach (X2, Y2) gegen den Uhrzeigersinn! Und konsultiere mal die Online-Hilfe zu den Parametern von Pie() bzw. Arc(). Zitat:
marabu |
Re: Halbkreis zeichnen auf Canvas
Zitat:
Delphi-Quellcode:
Canvas.Pie(X2,Y2,X1,Y1,X2,(Y1+Y2) div 2,X1,(Y1+Y2) div 2);
//(X1|Y1) Punkt links oben //(X2|Y2) Punkt rechts unten Zitat:
es gibt - ganz falsch - man sieht was es werden soll - eigentlich richtig - richtig und das gehörte in die kategorie eigentlich richtig :mrgreen: |
Re: Halbkreis zeichnen auf Canvas
Zitat:
Delphi-Quellcode:
:mrgreen:
+-> -ganz falsch
| -man sieht was es werden soll | -eigentlich richtig | -richtig +-- -Erkenntnis |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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