Kreis zeichnen
-
Hallo, so kann ich ja einen Kreis zeichnen:
Form1->PaintBox1->Canvas->Ellipse (200,200,350,350);
Meine Frage ist jetzt woher weiss ich welche Parameter ich übergeben muss damit ein Kreis entsteht wenn ich schreibe: Ellipse (100,100,350,350); dann wird der Kreis kleiner.
Wie kann ich berechnen das ich weiss welche Parameter ich übergeben muss?
-
Die Hilfe sagt dazu alles was man wissen muss: http://docwiki.embarcadero.com/Libraries/XE2/de/Vcl.Graphics.TCanvas.Ellipse
-
Das hat mit meiner Frage aber nicht so viel zu tun.
Mir geht es an der Stelle um die Mathematik.
-
Ähm, mit Mathematik hat das nur sehr peripher zu tun.
Der verlinkte Hilfeeintrag sagt in der Tat alles:
Die übergebenen Koordinaten legen die Position der linken oberen und der rechten unteren Ecke des Rechteckes fest, das die Ellipse (virtuell) umschliesst.
Für einen Kreis solle das Rechteck also quadratisch sein.
-
Bei einem Quadrat sind doch immer alle Seiten gleichlang.
Aber wenn ich schreibe:
Form1->PaintBox1->Canvas->Ellipse (350,350,350,350);Dann wird mir gar nichts angezeigt.
Und wie soll Ellipse(4,4,350,350); ein Quadrat ergeben?
Ich hab auch eine Grafik mal dazu erstellt: http://www10.pic-upload.de/30.08.12/2r89kovw2ky2.jpg
Die Hilft mir aber auch nicht wirklich weiter.
-
Hallo
Immerhin wurde bereits die Doku zu der Methode hier verlinkt, du solltest diese wenigstens mal lesen. Dann würdest du deinen Denkfehler erkennen.
Legen Sie das umgebende Recheck folgendermaßen fest:
Durch die linke obere Ecke mit den Pixel-Koordinaten (X1, Y1) und durch die rechte untere Ecke mit den Koordinaten (X2, Y2)
bis bald
akari
-
Die Koordinaten definieren die "Aussenkanten"
-
Ich glaub jetzt hab ich es verstanden wieso da ein Kreis ensteht bei:
Form1->PaintBox1->Canvas->Ellipse (200,200,350,350);
Hier meine etwas seltsame formulierte Erklärung aber immerhin kann ich mir jetzt erklären warum da am Ende ein Kreis rauskommt.^^
// Baut linkes Teil vom Rechteck siehe Grafik int x1=100; // Länge der Linie nach rechts int y1=100; // Höhe der Ellipse nach oben // Baut rechtes Teil vom Rechteck siehe Grafik int x2= 350; // Wieder die Länge der Linie int y2= 350; // Wieder die Höhe der Linie Form1->PaintBox1->Canvas->Ellipse (x1,y1, x2,y2);
Die Grafik:
-
So wie du das da betitelst und machst, hast es leider immernoch nicht verstanden.
Du willst immer einen Kreis haben? Dann hat das so auszuschauen:h = 50; // Durchmesser des Kreises Ellipse(x, y, x+h, y+h);
Hierbei ist der Startpunkt links oben. (Ob dir das was sagt?) Wenn du den Kreis aus der Mitte heraus zeichnen willst, nimmst den Radius, was die Hälfte des Durchmessers ist.
r = 25; // Radius des Kreises Ellipse(x, y, x-r, y-r);
-
~KreisMuffel schrieb:
r = 25; // Radius des Kreises Ellipse(x, y, x-r, y-r);
Ertappt
r = 25; // Radius des Kreises Ellipse(x-r, y-r, x+r, y+r);
-
~Kreismuffel schrieb:
Hierbei ist der Startpunkt links oben.
Die Funktion fängt oben Links im Rechteck an zu Zeichnen? Ist das richtig.
x und y scheinen ja die Position auf der Form anzugeben wo der Kreis erscheinen soll.
Ab wo fängt die Funktion den anzuzeichnen wenn man das in meiner Grafik verdeutlichen wollte?
Ab dem grünen Punkt wird meiner Meinung gezeichnet wenn ich schreiben:
h = 50; // Durchmesser des Kreises Ellipse(x, y, x+h, y+h);
Und ab dem roten Punkt wenn ich schreibe:
r = 25; // Radius des Kreises Ellipse(x, y, x-r, y-r);
Wobei über die Variable r und h kann ich auch die Position auf der Form verändern. Ich glaub ich gebs auf das hat kein Sinn ohne eine Zeichnung die alles bis ins kleinste Detail erklärt kapier ich das nicht.
Immerhin hab ich gelernt das ich 0 Talent für Grafikprogrammierung habe.Aber danke für eure Bemühungen.
-
Bitte geht doch nochmal auf die Seite