Gambas: Farben
zurück zu Gambas
Farben
BearbeitenMan kann die Farbe verschiedener Objekt ganz einfach über das Eigenschaftsfenster des Objektes verändern ( Vordergrund , Hintergrund etc). Das Eigenschaftsfenster öffnet man im Entwurfsmodus wie üblich mit F4.
Man kann die Farbeinstellungen aber auch während der Laufzeit ändern. Dies soll im folgenden Programmbeispiel gezeigt werden:
Dieses Miniprogramm zeigt die RGB Farben. Sie können in den Textboxen Werte von 0 - 255 eingeben und sich die Farbe anschauen. Aus den 3 Dezimalzahlen wird ein Hexadezimalwert als String gebastelt:
sHEX = Hex$(r,2) & Hex$(g,2) & Hex$(b,2) sHEX = "&H" & sHEX & "&"
Wollen Sie das Programm zum laufen bringen brauchen Sie auf Ihrer Form folgende Felder, die Sie sich aus dem Werkzeugkasten holen müssen:
- 3 Textlabelfelder
- 3 Textfelder ( Textbox1-3 ) für die RGB Wert eingabe
- 1 Befehlsfeld ( = Command Button )
- 1 Zeichenfeld ( = DrawingArea ) für die Farbdarstellung
Das Ganze schaut dann so aus:
Programmcode
PUBLIC SUB Button1_Click() DIM sHex AS String DIM r AS Integer DIM g AS Integer DIM b AS Integer IF Textbox1.text = "" THEN Textbox1.Text = 0 IF Textbox2.text = "" THEN Textbox2.Text = 0 IF Textbox3.text = "" THEN Textbox3.Text = 0 r = Val(Textbox1.Text) g = Val(Textbox2.Text) b = Val(Textbox3.Text) sHEX = Hex$(r,2) & Hex$(g,2) & Hex$(b,2) sHEX = "&H" & sHEX & "&" DrawingArea1.BackColor = Val(sHEX) END
Farbspektrum
BearbeitenDas natürliche Farbspektrum des Lichtes reicht von dunkelrot über orange, gelb, grün nach blau und violett.
Farbe | Wellenlaenge | RGB |
---|---|---|
Rot | ~ 625-740 nm | #DF0000 |
Orange | ~ 590-625 nm | #FF8000 |
Gelb | ~ 565-590 nm | #FFFF00 |
Gruen | ~ 520-565 nm | #00FF00 |
Cyan | ~ 500-520 nm | #00FFFF |
Blau | ~ 450-500 nm | #0000FF |
Indigo | ~ 430-450 nm | #0000AF |
Violett | ~ 380-430 nm | #50007F |
Will man sich dieses Farbspektrum anschauen, hilft einem folgendes Programm. Man kann es noch verbessern, wenn man einen Schieberegler zur Farbwahl nutzt.
Man braucht für das Programm eine Form, eine DrawingArea und einen Commandbutton. Wenn man den Commandbutton mehrfach betätigt wird die Farbe immer weiter verändert. Sie beginnt bei rot und endet bei violett.
Programmcode
sp AS Integer PUBLIC SUB Form_Open() sp = 1 drawingarea1.BackColor = &HC2020C& END PUBLIC SUB Button1_Click() DIM ss AS Integer ss = 1 ss = sp drawingarea1.BackColor = Val(spektrum(ss)) sp = sp + 20 ' Hier kann man die Farbsprünge wählen , addieren sie zu sp 5,10,20,50 oder 100 IF sp > 1120 THEN sp = 1 'bei violett springt es wieder nach rot zurück END PUBLIC FUNCTION spektrum(ss AS Integer) AS String x AS Integer sHEX AS String DIM s AS Integer DIM r AS Integer DIM g AS Integer DIM b AS Integer s = 0 FOR x = 1 TO 255 'rot nach gelb r = 255 b = 0 sHEX = Hex$(r,2) & Hex$(x,2) & Hex$(b,2) sHEX = "&H" & sHEX & "&" s = s + 1 IF s = ss THEN RETURN sHEX NEXT 's = 255 FOR x = 255 TO 1 STEP -1 'gelb nach grün g = 255 b = 0 sHEX = Hex$(x,2) & Hex$(g,2) & Hex$(b,2) sHEX = "&H" & sHEX & "&" s = s + 1 'PRINT s IF s = ss THEN RETURN sHEX NEXT 's = 510 FOR x = 1 TO 255 'von grün nach cyan r = 0 g = 255 sHEX = Hex$(r,2) & Hex$(g,2) & Hex$(x,2) sHEX = "&H" & sHEX & "&" s = s + 1 'PRINT s IF s = ss THEN RETURN sHEX NEXT 's = 765 FOR x = 255 TO 1 STEP - 1 'von cyan nach blau r = 0 b = 255 sHEX = Hex$(r,2) & Hex$(x,2) & Hex$(b,2) sHEX = "&H" & sHEX & "&" s = s + 1 'PRINT s IF s = ss THEN RETURN sHEX NEXT 's = 1020 b = 255 FOR x = 1 TO 100 'von blau nach lila g = 0 sHEX = Hex$(x,2) & Hex$(g,2) & Hex$(b,2) sHEX = "&H" & sHEX & "&" b = b - 2 s = s + 1 'PRINT s 'PRINT shex IF s = ss THEN RETURN sHEX NEXT 's = 1120 END