Referenz - PALETTE
Syntax A: PALETTE [Index, Farbe]
Syntax B: PALETTE Index, Rotwert, Grünwert, Blauwert
Syntax C: PALETTE USING ArrayName[(idx)]
Typ: Anweisung
Kategorie: Grafik
PALETTE bearbeitet die aktuelle Farbpalette.
- 'Index' ist die Nummer der Farbe, die bearbeitet werden soll.
- 'Farbe' ist der neue BGR-Farbwert, welcher der angegebenen Farbnummer zugewiesen werden soll.
- 'Rotwert', 'Grünwert' und 'Blauwert' sind die einzelnen Farbanteile.
- 'ArrayName(idx)' ist ein Array, in dem sich alle neuen Farbwerte befinden. 'idx' ist dabei der Index innerhalb von ArrayName, ab dem die Farbeinträge beginnen. Ein mit ALLOCATE reservierter Speicherbereich kann nicht verwendet werden; PALETTE kann mit einem solchen Speicherbereich (noch) nicht umgehen.
- Wird PALETTE ohne Parameter aufgerufen, so wird die Standard-Palette wieder hergestellt.
PALETTE ändert die aktuellen Einträge in der Farbpalette (nur in Grafik-Modi). Die Anweisung wird nur bei Modi bis 8 bpp eingesetzt; bei höheren Farbtiefen hat PALETTE keine Auswirkung.
'Index' und 'Farbe' sind abhängig von der aktuellen Farbtiefe des Grafikfensters. Wird das Grafikfenster mit SCREEN initialisiert, dann gelten folgende Farbbereiche:
Bildschirmmodus | Indexbereich | Farbbereich |
---|---|---|
1 | 0-3 | 0-15 |
2 | 0-1 | 0-15 |
7, 8 | 0-15 | 0-15 |
9 | 0-15 | 0-63 |
11 | 0-1 | siehe unten |
12 | 0-15 | siehe unten |
13 - 21 | 0-255 | siehe unten |
In den Bildschirmmodi 1, 2, 7, 8 und 9 können Sie jeder Farbnummer einen Index aus einer vordefinierten Palette zuweisen.
In den anderen Bildschirmmodi sowie bei der Verwendung von SCREENRES müssen Sie die Farbe als BGR-Farbwerte angeben. Diese haben das Format &hBBGGRR. BB, GG und RR sind jeweils der Blau-, Grün- und Rot-Wert der Farbe. Jede Teilfarbe kann dabei einen Wert von &h0 bis &h3F annehmen (0-63 als dezimale Werte).
Eine alternative Methode der Angabe der Farbe ist diese Methode:
clr = rot OR (grün SHL 8) OR (blau SHL 16)
Auch hier müssen rot, grün und blau im Bereich von 0 bis 63 liegen.
Der nächste SCREENRES- oder SCREEN-Befehl stellt die Standardpalette wieder her (siehe auch Standard-Paletten).
Alternativ zum Befehl PALETTE können Sie OUT verwenden, um die Palette zu bearbeiten; diese Methode ist allerdings veraltet und sollte nicht mehr verwendet werden.
Es ist auch möglich, die Teilfarben als einzelne Parameter anzugeben (Syntax B). Hier kann jeder Farbanteil im Bereich von 0 bis 255 liegen.
PALETTE USING (Syntax C) ändert alle Einträge der Palette auf einmal; die dazu nötigen Farbwerte werden dabei aus einem Array gelesen. Dazu muss ein Array übergeben werden, das groß genug ist, um Farbwerte für jeden Index des aktuellen Bildschirmmodus zu enthalten. Für 1 bpp müssen das 2 Elemente, für 2 bpp 4, für 4 bpp 16 und für 8 bpp 256 Elemente sein. Es müssen INTEGER-Werte sein, die das oben angegebene Format besitzen.
Die Farben, die in 'ArrayName' ab Index 'Index' gespeichert sind, werden dann den Farbnummern zugewiesen, wobei bei den Palette-Einträgen mit Farbe 0 begonnen wird. Die Verwendung von PALETTE USING mit Teilfarben ist nicht möglich; jedes Element des Arrays muss einen BGR-Wert enthalten.
Jede Veränderung der Palette wird sofort auf dem Bildschirm sichtbar.
Beispiel:
SCREENRES 640, 480, 4 ' 16 indizierte Farben
DIM AS INTEGER rot, gruen, blau, farbe
' Vertikale Streifen in allen 16 Farben zeichnen
FOR i AS INTEGER = 0 TO 15
LINE (i * 40, 0)-((i + 1) * 40, 479), i, BF
NEXT
' Auf Tastendruck warten
GETKEY
' Farbverlauf von schwarz nach blau
FOR i AS INTEGER = 0 TO 15
rot = 0
gruen = 0
blau = i * 4
farbe = rot OR (gruen SHL 8) OR (blau SHL 16)
PALETTE i, farbe
NEXT
GETKEY
' Farbverlauf von schwarz nach grün
FOR i AS INTEGER = 0 TO 15
PALETTE i, 0, (i+1)*16 - 1, 0
NEXT
GETKEY
' Farbverlauf von schwarz nach rot
DIM Farben(15) AS INTEGER
FOR i AS INTEGER = 0 TO 15
Farben(i) = i * 4
NEXT
PALETTE USING Farben
GETKEY
' Standardpalette wiederherstellen
PALETTE
SLEEP
Unterschiede zu früheren Versionen von FreeBASIC:
Seit Version 0.13 ist es auch möglich, die Teilfarben als einzelne Parameter anzugeben (Syntax B).
Siehe auch:
PALETTE GET, SCREENRES, COLOR (Anweisung), Standardpaletten, Grafik
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|