Gambas: Farben

Aus Wikibooks


zurück zu Gambas


Farben[Bearbeiten]

Man 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[Bearbeiten]

Das 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