| Autor |
Beitrag |
hgm83
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 31.07.04 18:21
Hallo Helfer!!
Ich habe folgendes Problem:
Ich soll Punkte zufällig auf einer Leinwand erstellen. Die Leinwand habe ich schon erstellt. Leider weiß ich nicht genau wie ich den Befehl 'Random' anwenden muss, damit es mir die Punkte zufällig verteilt. Mein Quellcode sieht bis jetzt folgendermaßen aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| unit Punktemaler;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons;
type TForm1 = class(TForm) PaintBox1: TPaintBox; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; procedure PaintBox1Paint(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private public end;
function: random;
var Form1: TForm1; xm, ym: integer;
const r=10;
implementation
{$R *.dfm}
procedure TForm1.PaintBox1Paint(Sender: TObject); begin with paintbox1 do begin canvas.pen.Color:=clblack; canvas.Brush.Color:=clwhite; canvas.Rectangle(0,0,300,300); end; with paintbox1.Canvas do begin ellipse(xm-r,ym-r,xm+r,ym+r); pen.Color:=clblue; brush.Color:=clblue; end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin close; end;
end. |
Wer kann mir weiterhelfen?? Danke!
Moderiert von Motzi: Delphi-Tags hinzugefügt.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 31.07.04 19:24
´Was soll das function: random da oben im Quellcode? Kuckt dir in der Hilfe mal Random und Randomize an.
|
|
DelphiFreund
      
Beiträge: 120
Win XP
D7 Enterprise
|
Verfasst: Sa 31.07.04 19:54
Verwende die Delphi-Code-Funktion. Sieht besser aus.
|
|
Cybo
      
Beiträge: 87
Win 95/98/xp/NT Suse Linux
D7 Ent
|
Verfasst: So 01.08.04 00:54
Delphi-Quelltext 1: 2: 3:
| randomize; Punkt1:=random(Formname.Height); Punkt2:=random(Formname.Width); |
und nun noch einzeichen... fertig ist das ganze
Cybo
_________________ Ich öffnete, kompilierte und traute meinen Augen nicht.
|
|
hgm83 
Hält's aus hier
Beiträge: 5
|
Verfasst: So 01.08.04 08:22
Habe schon in der Hilfe gelesen, nur war das wenig aufschlussreich für mich. Habe mich jetzt mal an den Rat von Cybo gehalten und folgendes gemacht:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| begin randomize; xm:=random(Form1.Height); ym:=random(Form1.Width); ellipse(xm-r,ym-r,xm+r,ym+r); pen.Color:=clblue; brush.Color:=clblue; end; |
Jetzt kann ich ohne Probleme kompilieren, ABER:
Ich erhalte nur noch eine graue Programmoverfläche. Meine Buttons oder die paintbox sieht man nicht mehr.
Wie kann ich die random-Funktion [ähnlichmit random(0<=xm<300)] auf die paintbox größe begrenzen? Oder liegt das Problem woanders?
Danke
Moderiert von Motzi: Delphi-Tags hinzugefügt.
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: So 01.08.04 08:58
Hallo
| Zitat: |
Habe schon in der Hilfe gelesen, nur war das wenig aufschlussreich für mich.
|
warum nicht? englische hilfe  ?
| Zitat: |
ellipse(xm-r,ym-r,xm+r,ym+r);
pen.Color:=clblue;
brush.Color:=clblue;
|
Ich möchte mein Haus farbig streichen. Ich kaufe mir einen Eimer GrundFarbe und streiche mein Haus damit, nachdem ich mit dem Streichen fertig bin, tue ich die Abtönfarbe in meinen Farbeimer und wundere mich, warum mein haus trotzdem noch weiß ist  .
Du mußt erst die Farben setzen und dann zeichnen  .
| Zitat: |
xm:=random(Form1.Height);
...
Wie kann ich die random-Funktion [ähnlichmit random(0<=xm<300)] auf die paintbox größe begrenzen?
|
Gegenfrage: welchen parameter erwartet denn random? und wie ermittelt man die größe der paintbox?
mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
hgm83 
Hält's aus hier
Beiträge: 5
|
Verfasst: So 01.08.04 09:18
Hallo,
Hilfe sagt folgendes:
[size=9]Delphi-Syntax:
function Random [ ( Range: Integer) ];
Beschreibung
In Delphi gibt Random eine Zufallszahl im Bereich 0 <= X < Range zurück. Wird der Parameter Range nicht angegeben, liefert Random einen Real-Wert im Bereich
0 <= X < 1.[/size]
Jetzt weiß ich zwar das ich irgendetwas mit Random machen muss, aber als Anfänger verwirrt mich zum Beispiel "Range".
Deshalb auch die Frage nach dem Wertebereich. Die Paintbox größe hat man ja vorher festgelegt, z.B. mit:
canvas.Rectangle(0,0,300,300)
|
|
Keldorn
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: So 01.08.04 09:25
ist das so schwer zu vertehen, das random(300) dir werte von 0 bis 299 zurückgibt? Range gibt den Bereich an, wie es auch in der Hilfe steht.
| Zitat: |
Die Paintbox größe hat man ja vorher festgelegt, z.B. mit:
canvas.Rectangle(0,0,300,300)
|
damit legst du nicht die Größe der paintbox fest, du zeichnest nur ein Rechteck. Die Größe wird durch die width und height-Eigenschaft bestimmt.
Mfg Frank
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
hgm83 
Hält's aus hier
Beiträge: 5
|
Verfasst: So 01.08.04 09:46
Alles klar,
danke für Tips&Verständnis. Es funktioniert jetzt!!
|
|
Cybo
      
Beiträge: 87
Win 95/98/xp/NT Suse Linux
D7 Ent
|
Verfasst: So 01.08.04 11:48
bitte
achja und zu dem von Keldorn | Zitat: | | ist das so schwer zu vertehen, das random(300) dir werte von 0 bis 299 zurückgibt? Range gibt den Bereich an, wie es auch in der Hilfe steht. |
deswegen nutzt man ja auch meißtens die Funktion random(300)+1; das ergibt dann Zahlen von 1 bis 300. Nur ein Tipp, kann man imemr mal wieder brauchen
Cybo
_________________ Ich öffnete, kompilierte und traute meinen Augen nicht.
|
|