Autor |
Beitrag |
Waldkauz
      
Beiträge: 102
|
Verfasst: So 08.03.09 14:12
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.
Einloggen, um Attachments anzusehen!
|
|
ub60
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: 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
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: 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
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: 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,
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: So 08.03.09 15:18
Sry, da hatte ich mir irgendwie was dazugedacht, als ich es gelesen habe (aus Gewohnheit).
|
|
Waldkauz 
      
Beiträge: 102
|
Verfasst: So 08.03.09 15:57
Wahnsinn - echt super das Forum hier! Jetzt funktionierts problemlos.
Danke nochmal
|
|
ub60
      
Beiträge: 764
Erhaltene Danke: 127
|
Verfasst: 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  :
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
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: So 08.03.09 17:05
Richtig. 
|
|
|