Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine logische Palette ist eine Farbpalette, die von einer Anwendung erstellt und einem bestimmten Gerätekontext zugeordnet wird. Logische Paletten ermöglichen Es Anwendungen, Farben zu definieren und zu verwenden, die ihren spezifischen Anforderungen entsprechen. Anwendungen können eine beliebige Anzahl logischer Paletten erstellen, sie für separate Gerätekontexte verwenden oder zwischen ihnen für einen einzelnen Gerätekontext wechseln. Die maximale Anzahl von Paletten, die eine Anwendung erstellen kann, hängt von den Ressourcen des Systems ab.
Eine Anwendung erstellt mithilfe der CreatePalette-Funktion eine logische Palette. Die Anwendung füllt eine LOGPALETTE Struktur, die die Anzahl der Einträge und die Farbwerte für jeden Eintrag angibt, und dann übergibt die Anwendung die Struktur an CreatePalette. Die Funktion gibt ein Palettenhandle zurück, das von der Anwendung in allen nachfolgenden Vorgängen zum Identifizieren der Palette verwendet wird. Um Farben in der logischen Palette zu verwenden, wählt die Anwendung die Palette in einem Gerätekontext mithilfe der SelectPalette-Funktion aus und realisiert dann die Palette mithilfe der funktion RealizePalette. Die Farben in der Palette sind verfügbar, sobald die logische Palette realisiert wird.
Eine Anwendung sollte die Größe ihrer logischen Paletten auf nur genügend Einträge beschränken, um die benötigten Farben darzustellen. Anwendungen können keine logischen Paletten erstellen, die größer als die maximale Palettengröße sind, ein geräteabhängiger Wert. Anwendungen können die maximale Größe mithilfe der GetDeviceCaps--Funktion abrufen, um den SIZEPALETTE-Wert abzurufen.
Obwohl eine Anwendung einen beliebigen Farbwert für einen bestimmten Eintrag in einer logischen Palette angeben kann, können nicht alle Farben vom angegebenen Gerät generiert werden. Das System bietet keine Möglichkeit, zu ermitteln, welche Farben unterstützt werden, aber die Anwendung kann die Gesamtanzahl dieser Farben ermitteln, indem die Farbauflösung des Geräts abgerufen wird. Die in Farbbits pro Pixel angegebene Farbauflösung entspricht dem COLORRES-Wert, der von der GetDeviceCaps-Funktion zurückgegeben wird. Ein Gerät mit einer Farbauflösung von 18 verfügt über 262.144 mögliche Farben. Wenn eine Anwendung eine nicht unterstützte Farbe anfordert, wählt das System eine geeignete Annäherung aus.
Nachdem eine logische Palette erstellt wurde, kann eine Anwendung Farben in der Palette ändern, indem sie die SetPaletteEntries--Funktion verwenden. Wenn die logische Palette ausgewählt und realisiert wurde, wirkt sich das Ändern der Palette nicht sofort auf die angezeigten Farben aus. Die Anwendung muss die funktionen Unobject und RealizePalette verwenden, um die Farben zu aktualisieren. In einigen Fällen muss die Anwendung möglicherweise die Auswahl aufheben, aufheben, auswählen und die logische Palette realisieren, um sicherzustellen, dass die Farben genau wie angefordert aktualisiert werden. Wenn eine Anwendung eine logische Palette in mehr als einen Gerätekontext auswählt, wirken sich Änderungen an der logischen Palette auf alle Gerätekontexte aus, für die sie ausgewählt ist.
Eine Anwendung kann die Anzahl der Einträge in einer logischen Palette mithilfe der ResizePalette-Funktion ändern. Wenn die Anwendung die Größe reduziert, bleiben die verbleibenden Einträge unverändert. Wenn die Anwendung die Größe erweitert, legt das System die Farbe für jeden neuen Eintrag auf Schwarz (0, 0, 0) und das Flag auf Null fest.
Eine Anwendung kann die Farb- und Kennzeichnungswerte für Einträge in einer bestimmten logischen Palette mithilfe der GetPaletteEntries-Funktion abrufen. Eine Anwendung kann den Index für den Eintrag in einer bestimmten logischen Palette abrufen, die am ehesten mit einem angegebenen Farbwert übereinstimmt, indem die GetNearestPaletteIndex-Funktion verwendet wird.
Wenn eine Anwendung keine logische Palette mehr benötigt, kann sie mithilfe der funktion DeleteObject gelöscht werden. Die Anwendung muss sicherstellen, dass die logische Palette nicht mehr in einem Gerätekontext ausgewählt ist, bevor Sie die Palette löschen.