Delen via


Logisch palet

Een logisch palet is een kleurenpalet dat een toepassing maakt en koppelt aan een bepaalde apparaatcontext. Met logische paletten kunnen toepassingen kleuren definiëren en gebruiken die voldoen aan hun specifieke behoeften. Toepassingen kunnen een willekeurig aantal logische paletten maken, deze gebruiken voor afzonderlijke apparaatcontexten of schakelen tussen de palets voor één apparaatcontext. Het maximum aantal paletten dat een toepassing kan maken, is afhankelijk van de resources van het systeem.

Een toepassing maakt een logisch palet met behulp van de functie CreatePalette. De toepassing vult een LOGPALETTE structuur, waarmee het aantal vermeldingen en de kleurwaarden voor elke vermelding wordt opgegeven, waarna de toepassing de structuur doorgeeft aan CreatePalette-. De functie retourneert een paletgreep die de toepassing in alle volgende bewerkingen gebruikt om het palet te identificeren. Als u kleuren in het logische palet wilt gebruiken, selecteert de toepassing het palet in een apparaatcontext met behulp van de functie SelectPalette en realiseert het palet vervolgens met behulp van de functie RealizePalette. De kleuren in het palet zijn beschikbaar zodra het logische palet wordt gerealiseerd.

Een toepassing moet de grootte van de logische paletten beperken tot precies genoeg vermeldingen om de benodigde kleuren weer te geven. Toepassingen kunnen geen logische paletten maken die groter zijn dan de maximale paletgrootte, een apparaatafhankelijke waarde. Toepassingen kunnen de maximale grootte verkrijgen met behulp van de functie GetDeviceCaps om de waarde SIZEPALETTE op te halen.

Hoewel een toepassing elke kleurwaarde voor een bepaalde vermelding in een logisch palet kan opgeven, kunnen niet alle kleuren worden gegenereerd door het opgegeven apparaat. Het systeem biedt geen manier om te ontdekken welke kleuren worden ondersteund, maar de toepassing kan het totale aantal van deze kleuren detecteren door de kleurresolutie van het apparaat op te halen. De kleurresolutie, opgegeven in kleur bits per pixel, is gelijk aan de COLORRES-waarde die wordt geretourneerd door de functie GetDeviceCaps. Een apparaat met een kleurresolutie van 18 heeft 262.144 mogelijke kleuren. Als een toepassing een kleur aanvraagt die niet wordt ondersteund, kiest het systeem een passende benadering.

Zodra een logisch palet is gemaakt, kan een toepassing kleuren in het palet wijzigen met behulp van de functie SetPaletteEntries. Als het logische palet is geselecteerd en gerealiseerd, heeft het wijzigen van het palet niet onmiddellijk invloed op de kleuren die worden weergegeven. De toepassing moet de functies UnselectObject en RealizePalette gebruiken om de kleuren bij te werken. In sommige gevallen moet de toepassing mogelijk de selectie opheffen, deselecteren, selecteren en realiseren van het logische palet om ervoor te zorgen dat de kleuren exact worden bijgewerkt zoals aangevraagd. Als een toepassing een logisch palet selecteert in meer dan één apparaatcontext, zijn wijzigingen in het logische palet van invloed op alle apparaatcontexten waarvoor het is geselecteerd.

Een toepassing kan het aantal vermeldingen in een logisch palet wijzigen met behulp van de functie ResizePalette. Als de toepassing de grootte vermindert, worden de resterende vermeldingen ongewijzigd. Als de toepassing de grootte uitbreidt, stelt het systeem de kleur voor elke nieuwe vermelding in op zwart (0, 0, 0) en de vlag op nul.

Een toepassing kan de kleur- en vlagwaarden voor vermeldingen in een bepaald logisch palet ophalen met behulp van de functie GetPaletteEntries. Een toepassing kan de index voor de vermelding in een bepaald logisch palet ophalen dat het meest overeenkomt met een opgegeven kleurwaarde met behulp van de functie GetNearestPaletteIndex.

Wanneer een toepassing geen logisch palet meer nodig heeft, kan deze worden verwijderd met behulp van de functie DeleteObject. De toepassing moet ervoor zorgen dat het logische palet niet meer is geselecteerd in een apparaatcontext voordat u het palet verwijdert.