Tutorials/Farben: Unterschied zwischen den Versionen
(created) |
(kein Unterschied)
|
Version vom 13. April 2014, 03:07 Uhr
Vorlage:TITLEDISPLAY:Tutorial: Farben
Inhaltsverzeichnis
Ziel des Tutorials
Nach diesem Tutorial kennst du alle String
-Codierungen der Engine für Farben und kannst beliebige Farben in der Engine durch RGB- bzw. RGBA-Werte beschfreiben.
String-Codierung von Farben
Folgende Strings repräsentieren die entsprechende Farbe in der Engine:
"Gelb", "Orange", "Weiss", "Grau", "Gruen", "Blau", "Rot", "Pink",
"Magenta"/"Lila", "Cyan"/"Tuerkis", "Dunkelgrau", "Hellgrau",
"Schwarz"
Farben über RGB
Zu der Darstellung von Farben als Strings gibt es natürlich eine Alternative, mit der sich jede Farbe für jeden Zweck exakt maßschneidern lässt. Ein Farbton lässt sich über die Anteile der drei Komplementärfarben Rot, Grün und Blau beschreiben. Dieser kann zwischen 0 und 100% liegen.
Das kann man als digitales Farbenmischen betrachten, indem man verschiedene Anteile der Grundfarben zusammenmischt um den gewünschten Farbton zu erhalten. Angegeben werden diese Anteile jedoch nicht in Prozent sondern in Zahlen zwischen 0 (≙ 0% Anteil) und 255 (≙ 100% Anteil). Nun lässt sich eine Farbe also durch 3 Zahlen beschreiben, den Rot/Grün/Blau-Anteilen. Dies wird mit R/G/B abgekürzt.
Farbe
ist eine Klasse in der Engine Alpha. Sie beschreibt eine Farbe und lässt sich sehr leicht instanziieren. Dieser Konstruktor sorgt für eine Farbe:
public Farbe(int r, int g, int b)
Die drei Zahlenwerte müssen Zahlen zwischen 0 und 255 liegen und entsprechen den Anteilen der entsprechenden Grundfarbe, die zum "Mischen" verwendet werden soll.
So erhält man zum Beispiel:
Schwarz | new Farbe(0, 0, 0); |
Weiß | new Farbe(255, 255, 255); |
Orange | new Farbe(255, 200, 0); |
Cyan/Türkis | new Farbe(0, 255, 255); |
Natürlich sind auch alle anderen Zahlenkombinationen mit Werten zwischen 0 und 255 möglich.
Farben setzen lassen sich bei allen färbbaren Klassen (Text
und alle Geometrie
-Klassen) mit diesen beiden Methoden:
public void farbeSetzen(String farbName)
public void farbeSetzen(Farbe farbe)
Die zweite Methode ist dir vielleicht neu. Hierbei muss ein Farbe
-Objekt als Parameter übergeben werden und ab diesem Moment füllt genau diese Farbe das Objekt aus.
Alpha-Werte
Ein weiterer Vorteil der Klasse Farbe ist die Möglichkeit, Farben zu einem gewissen Anteil durchsichtig machen zu können. Die "Nichtdurchsichtigkeit" (oder auch Opacity) einer Farbe wird als Alpha-Helligkeit bezeichnet. Auch diese lässt sich mit einem Wert zwischen 0 und 255 beschreiben. Ist sie 255, so ist die Farbe gänzlich sichtbar; ist sie 0, ist die Farbe absolut durchsichtig und damit unsichtbar. Alle Werte dazwischen sorgen für eine unterschiedlich stark durchsichtige, geister- oder glasartige Farbe.
Hierfür gibt es dann den vollen Konstruktor der Klasse Farbe
:
public Farbe(int r, int g, int b, int alpha)
Ein sehr einfaches Beispiel, es wird ein halbdurchsichtiges Rechteck erstellt:
/*In der spielsteuernden Klasse (wg. der “wurzel“)*/
//Erstelle ein Quadrat mit Seitenlaenge 200
//in der linken oberen Bildecke
Rechteck recht = new Rechteck(0, 0 200, 200);
//Erstelle der Fuellfarbe
Farbe fuellFarbe = new Farbe(178, 255, 255, 200);
//Dem Quadratk die Fuellfarbe zuweisen
recht.farbeSetzen(fuellFarbe);
//Das Rechteck an der Wurzel anmelden. Dann wird es sichtbar
wurzel.add(recht);