Entwickler-Ecke

Sonstiges (Delphi) - Zufällige Farbwahl


Massa - Mi 16.01.08 20:08
Titel: Zufällige Farbwahl
Hallo zusammen.

Wieder einmal habe ich ein kleines Problem.
Ich habe mir eine kleine Landschaft gezeichnet und möchte nun ein Paar Ballons "steigen lasse". Dies geschieht durch Klick auf ein Button. Meine Ballons haben jetzt aber nur eine Farbe. Was ich aber möchte ist, dass die Farbe zufällig ausgewählt wird. Einzige Bedingung ist das es nur drei Farben sein sollen (rot, gelb und blau). Ich schätze mal, dass man es mit random machen muss nur ich weiß nicht genau wie.
Hier mal der Anfang:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.zeichneBallon (xpos,ypos: integer);
  begin
     with ImBild.Canvas do begin
      brush.color:=clRed;                    //     hier muss denke ich mal mit - 
      ellipse(xpos,ypos,xpos+10,ypos+15);    //     random gearbeitet werden
                                                

     end;
  end;



Gruß Massa


Gausi - Mi 16.01.08 20:13


Delphi-Quelltext
1:
2:
3:
4:
5:
case random(3of
  0: brush.color := clRed;
  1: brush.color := clBlue;
  else brush.color := clGreen;
end;


Yogu - Mi 16.01.08 20:14

Hallo,

zuerst solltest du deine Farben definieren. Das machst du mit Konstanten, und zwar so:


Delphi-Quelltext
1:
2:
3:
const
  Colors = array[0..2of TColor (clRed, clBlue, clYellow);
  ColorCount = 3;

In deiner Zeichnen-Methode greifst du jetzt, wie du richtig erkannt hast, mit Random auf eine Farbe zu. Vorher musst du aber noch den Zufalls-Generator initialisieren:


Delphi-Quelltext
1:
2:
Randomize;
Brush.Color := Colors[Random(ColorCount)];

Wenn du jetzt weitere Farben hinzufügen willst, kannst du einfach die Konstantenwerte ändern. Das ist der Vorteil gegenüber dem Code von user profile iconGausi.

Grüße,
Yogu


Massa - Mi 16.01.08 20:17

Hey vielen dank.

Ich hätte ja nicht so schnell mit einer Antwort gerechnet, aber DANKE.
Es funktioniert auch!

Und auch danke an Yogu.

Gruß Massa