Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Kreis an zufälliger Positition zeichnen
Waldkauz - So 08.03.09 14:12
Titel: Kreis an zufälliger Positition zeichnen
Hallo.
Tut mir leid, aber ich muss mich nochmal wegen diesem blöden Kreis-Problem melden.
Ich kann die Sache einfach nicht lassen.
Wie es aussieht und wie es aussehen soll, sieht man eh auf den Bildern.
Die Buttonfunktion sieht folgendermaßen aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Button4Click(Sender: TObject); var i: Integer; zahleins : integer; zahlzwei : integer; zahldrei : integer; zahlvier : integer; begin
Image1.Canvas.Pen.Color:=clblack; Image1.Canvas.Brush.Style:= bsSolid; Image1.Canvas.Brush.Color:=rgb(random(256),random(256),random(256)); zahleins := random(200); zahlzwei := zahleins; zahldrei := random(200); zahlvier := zahldrei; Image1.Canvas.Ellipse(zahleins,zahlzwei,zahldrei,zahlvier);
end; |
Die Kreise sind also nur entlang der ersten Diagonale...
Moderiert von
AXMD: Delphi-Tags hinzugefügt
Moderiert von
Narses: Titel geändert.
ub60 - So 08.03.09 14:45
So sollte es gehen:
Delphi-Quelltext
1: 2: 3: 4:
| zahleins := random(200); zahlzwei := random(200); Durchmesser := random(200); Image1.Canvas.Ellipse(zahleins, zahlzwei, zahleins+Durchmesser, zahlzwei+Durchmesser); |
ub60
Jakob_Ullmann - So 08.03.09 15:05
Du setzt zahl1 und zahl2 gleich. Kein Wunder, dass du deine Kreise nur auf der Diagonale von links oben nach rechts unten siehst, denn x- und y-Werte sind ja immer gleich. Denn wenn du
Delphi-Quelltext
1: 2:
| zahl1 := random(xxx); zahl2 := zahl1; |
schreibst, ist das was anderes als
Delphi-Quelltext
1: 2:
| zahl1 := random(xxx); zahl2 := random(xxx); |
Denn random(xxx) wird ja nicht neu berechnet, sondern es wird nur der Speicherinhalt von zahl1 ausgelesen.
edit @ub60: Das wäre dann der Radius, nicht der Durchmesser.
Die Variante von ub60 ist aber sonst "richtig".
Dunkel - So 08.03.09 15:14
Und gewöhn Dir an, den Variablen ordentliche, aussagekräftige Namen zu geben. In einem Monat wirst Du nicht mehr wissen, was Zahl42 ist, aber Du würdest wissen, was PosX, PosY und Durchmesser sind.
Jakob_Ullmann hat folgendes geschrieben : |
edit @ub60: Das wäre dann der Radius, nicht der Durchmesser. |
Denk nochmal drüber nach, wie Canvas.Ellispe funktioniert! Durchmesser ist schon richtig,
Jakob_Ullmann - So 08.03.09 15:18
Sry, da hatte ich mir irgendwie was dazugedacht, als ich es gelesen habe (aus Gewohnheit).
Waldkauz - So 08.03.09 15:57
Wahnsinn - echt super das Forum hier! Jetzt funktionierts problemlos.
Danke nochmal
ub60 - So 08.03.09 16:54
Jakob_Ullmann hat folgendes geschrieben : |
Sry, da hatte ich mir irgendwie was dazugedacht, als ich es gelesen habe (aus Gewohnheit). |
Und ich bin jetzt mal prophetisch und sage Dir, was Du gedacht hast :wink: :wink: :
Delphi-Quelltext
1: 2: 3: 4:
| xMittelpunkt:= random(200); yMittelpunkt := random(200); Radius := random(200); Image1.Canvas.Ellipse(xMittelpunkt-Radius, yMittelpunkt-Radius , xMittelpunkt+Radius, yMittelpunkt+Radius); |
So gehts natürlich auch.
ub60
Jakob_Ullmann - So 08.03.09 17:05
Richtig. :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!