Zufällige Farbe (TColor)



  • Ich möchte eine Farbe zufällig auswählen.

    Die Farbeigenschaft von Objekten (BCB 6.0) ist vom Typ TColor und somit eine Enumeration.

    Wie kann ich diese zufällig verändern?

    0x00000000

    Die ersten zwei Bit sind für spezielle Farboperationen, die nächsten zwei für den Blauanteil, die nächsten zwei für den Grünanteil und die letzten zwei für den Rotanteil.



  • Hallo

    Sich dir mit den normalen Zufallsfunktionen (Forumsuche nach *rand*...) eine 32-bit Zahl, überschreib die ersten 2 Bytes mittels Bitoperationen mit 0 und verwende den Konstruktor von TColor um die Zahl in ein TColor umzuwandeln.

    bis bald
    akari



  • eine 32-bit Zahl, überschreib die ersten 2 Bytes mittels Bitoperationen mit 0

    Wozu so umständlich ?

    int red = rand()%0xFF;
    int blue = rand()%0xFF;
    int green = rand()%0xFF;
    
    TColor Color = (TColor)(red+green*256+blue*256*256);
    

    hab ich was übersehen ?



  • Hallo

    Du ziehst 3 32-bit Zufallszahlen, schneidest jeweils die ersten 3 Bytes weg und kopierst diese dann zu einer 32-bit Zahl zusammen. Welches Vorgehen umständlicher ist, ist Geschmackssache. Das Ziel ist gleich.

    bis bald
    akari



  • Tim06TR schrieb:

    Wozu so umständlich ?

    dann eher so:

    TColor color  = 0<<24 | random(256)<<16 | random(256)<<8 | random(256);
    

Log in to reply