Standardpalette
Die Standardpalette ist ein Array von Farbwerten, die die Farben identifizieren, die standardmäßig mit einem Gerätekontext verwendet werden können. das System ordnet die Standardpalette einem Kontext zu, wenn eine Anwendung einen Kontext für ein Gerät erstellt, das Farbpaletten unterstützt. Die Standardpalette stellt sicher, dass Farben für die Verwendung durch eine Anwendung ohne weitere Maßnahmen verfügbar sind.
Die Standardpalette weist in der Regel 20 Einträge (Farben) auf, aber die genaue Anzahl der Einträge kann von Gerät zu Gerät variieren. Diese Zahl entspricht dem WERT NUMCOLORS, der von der funktion GetDeviceCaps zurückgegeben wird. Eine Anwendung kann die Farbwerte für Farben in der Standardpalette abrufen, indem Sie Einfarbige Stifte aufzählen, die gleiche Technik, die zum Ermitteln der Farben verwendet wird, die auf Nichtpalettengeräten verfügbar sind. Die Farben in der Standardpalette hängen vom Gerät ab. Anzeigegeräte verwenden z. B. häufig die 16 Standardfarben der VGA-Anzeige und 4 andere von Windows definierte Farben. Druckgeräte können andere Standardfarben verwenden.
Bei Verwendung der Standardpalette verwenden Anwendungen Farbwerte, um Stift- und Textfarben anzugeben. Wenn sich die angeforderte Farbe nicht in der Palette befindet, nähert sich das System mit der nächstgelegenen Farbe in der Palette an. Wenn eine Anwendung eine Volltonpinselfarbe anfordert, die sich nicht in der Palette befindet, simuliert das System die Farbe durch Dithering mit Farben, die sich in der Palette befinden.
Um Annäherungen und Dithering zu vermeiden, können Anwendungen auch Stift-, Pinsel- und Textfarben angeben, indem Farbpalettenindizes anstelle von Farbwerten verwendet werden. Ein Farbpalettenindex ist ein ganzzahliger Wert, der einen bestimmten Paletteneintrag identifiziert. Anwendungen können Farbpalettenindizes anstelle von Farbwerten verwenden, müssen jedoch das PALETTEINDEX Makro verwenden, um die Indizes zu erstellen.
Farbpalettenindizes sind nur für Geräte nützlich, die Farbpaletten unterstützen. Um diese Geräteabhängigkeit zu vermeiden, sollten Anwendungen, die denselben Code zum Zeichnen auf Paletten- und Nichtpalettengeräten verwenden, paletterelative Farbwerte verwenden, um Stift-, Pinsel- und Textfarben anzugeben. Diese Werte sind mit Farbwerten identisch, außer beim Erstellen von Volltonpinseln. (Auf Palettengeräten unterliegt eine durch einen palettenrelativen Farbwert angegebene Volltonfarbe einer Farbannäherung anstelle von Dithering.) Anwendungen müssen das PALETTERGB- Makro verwenden, um paletterelative Farbwerte zu erstellen.
Das System lässt es einer Anwendung nicht zu, die Einträge in der Standardpalette zu ändern. Um andere Farben als die in der Standardpalette zu verwenden, muss eine Anwendung eine eigene logische Palette erstellen und die Palette im Gerätekontext auswählen.