Sdílet prostřednictvím


Logická paleta

logická paleta je barevná paleta, kterou aplikace vytvoří a přidruží k danému kontextu zařízení. Logické palety umožňují aplikacím definovat a používat barvy, které vyhovují jejich konkrétním potřebám. Aplikace můžou vytvořit libovolný počet logických palet, použít je pro samostatné kontexty zařízení nebo mezi nimi přepínat pro jeden kontext zařízení. Maximální počet palet, které může aplikace vytvořit, závisí na prostředcích systému.

Aplikace vytvoří logickou paletu pomocí funkce CreatePalette. Aplikace vyplní LOGPALETTE strukturu, která určuje počet položek a hodnoty barev pro každou položku a pak aplikace předá strukturu CreatePalette. Funkce vrátí popisovač palety, který aplikace používá ve všech následných operacích k identifikaci palety. Pokud chcete použít barvy v logické paletě, aplikace vybere paletu do kontextu zařízení pomocí funkce SelectPalette a pak tuto paletu zjistí pomocí funkce RealizePalette. Barvy v paletě jsou k dispozici hned po realizaci logické palety.

Aplikace by měla omezit velikost logických palet na dostatek položek, aby představovaly potřebné barvy. Aplikace nemohou vytvářet logické palety větší než maximální velikost palety, tedy hodnota závislá na zařízení. Aplikace mohou získat maximální velikost pomocí funkce GetDeviceCaps k načtení hodnoty SIZEPALETTE.

I když aplikace může zadat libovolnou hodnotu barvy pro danou položku v logické paletě, ne všechny barvy mohou být generovány daným zařízením. Systém neposkytuje způsob, jak zjistit, které barvy jsou podporovány, ale aplikace může zjistit celkový počet těchto barev načtením rozlišení barev zařízení. Rozlišení barev zadané v barevných bitech na pixel se rovná hodnotě COLORRES vrácené funkcí GetDeviceCap s. Zařízení s rozlišením 18 má 262 144 možných barev. Pokud aplikace požaduje barvu, která není podporována, systém zvolí odpovídající aproximaci.

Po vytvoření logické palety může aplikace změnit barvy v paletě pomocí funkce SetPaletteEntries. Pokud byla logická paleta vybrána a dosažena, změna palety nemá okamžitě vliv na zobrazené barvy. Aplikace musí k aktualizaci barev použít UnrealizeObject a RealizePal ette. V některých případech může aplikace potřebovat zrušit výběr, zrušit výběr, vybrat a uvědomit si logickou paletu, aby se zajistilo, že se barvy aktualizují přesně tak, jak jsou požadovány. Pokud aplikace vybere logickou paletu do více než jednoho kontextu zařízení, změny logické palety ovlivní všechny kontexty zařízení, pro které je vybraná.

Aplikace může změnit počet položek v logické paletě pomocí funkce ResizePalette. Pokud aplikace zmenšuje velikost, zbývající položky se nezmění. Pokud aplikace rozšíří velikost, systém nastaví barvu pro každou novou položku na černou (0, 0, 0) a příznak na nulu.

Aplikace může načíst hodnoty barev a příznaků pro položky v dané logické paletě pomocí funkce GetPaletteEntries. Aplikace může načíst index pro položku v dané logické paletě, která nejvíce odpovídá zadané hodnotě barvy pomocí funkce GetNearestPaletteIndex.

Pokud už aplikace nepotřebuje logickou paletu, může ji odstranit pomocí funkce DeleteObject. Aplikace musí před odstraněním palety zajistit, aby logická paleta nebyla vybrána do kontextu zařízení.