Oefening 10: Spelen met kleuren

Kleuren worden in Visual Basic bewaard in zogenaamde kleurconstanten (ColorConstants). In feite is dit een getal waarin de drie kleurcomponenten, rood groen en blauw, zitten opgeslagen als volgt:

Kleurwaarde  = Rood + 256*Groen + 256*256*Blauw
Elke kleur kan een waarde aannemen van 0 (niet aanwezig) tot 255 (maximale sterkte). Zo kunnen we dus 256*256*256 = ong. 16.000.000 verschillende kleuren weergeven.
Kleuren genereren in Visual Basic gaat met de oude functie QBcolor() met als resuultaat slechts 16 verschillende kleuren, en RGB(), waarmee we alle kleuren kunnen weergeven.

Als voorbeeld hebben we een programma "Waaier"geschreven waarmee u een kleurenwaaier kunt tekenen.
U kiest de linkerkleur, en de rechterkleur van de waaier. En het programma berekent alle tussenschakeringen. Door op het formulier te klikken worden voor de start- en eindwaarde van de waaierkleuren, én voor de achtergrondkleur van het formulier willekeurige waarden gekozen.

Een ander kan er als hieronder uitzien:
 
of:
Twee comboboxen laten toe de startkleur en de eindkleur van de waaier te kiezen.

In het programma werd een functie KleurComp gebruikt die de drie kleurwaarden rood, groen en blauw uit een kleurwaarde berekent:
 

Private Sub KleurComp(ByVal C As ColorConstants, _
                            Rood As ColorConstants, _
                            Groen As ColorConstants, _
                            Blauw As ColorConstants)

    'Kleur = Rood + 256*Groen + 256*256*Blauw
    'Bereken de rood component
    Rood = C Mod 256 ' rest bij deling door 256
    'groen
    C = (C - Rood) / 256 ' C = Groen + 256*Blauw
    Groen = C Mod 256
    'en blauw
    Blauw = (C - Groen) / 256
End Sub

De Kleur wordt als de eerste parameter C meegegeven. De drie basiskleuren worden berekend in de parameters Rood,Groen en Blauw.

ByVal en ByRef
Als u een parameter ByVal meegeeft, kunt u de waarde van die parameter niet veranderen in de functie. Voor de kleurconstante c is dat ook niet nodig. Als u de Byref meegeeft kunt u de waarde wél veranderen in de procedure. ByRef is tevens de defaultwaarde. Dus de parameters Rood,Groen en Blauw kunnen in de functie aangepast (berekend) worden.

Om de drie kleurencomponenten te van een kleur Eindkleur te berekenen en de waarden voor rood, groen en blauw op te slaan in de variabelen  RoodE, GroenE en BlauwE moet u deze functie dus als volgt aanroepen:

KleurComp Eindkleur, RoodE, GroenE, BlauwE

Broncode Waaier