Tavolozza logica
Una tavolozza logica è una tavolozza dei colori che un'applicazione crea e associa a un determinato contesto di dispositivo. Le tavolozze logiche consentono alle applicazioni di definire e usare colori che soddisfano esigenze specifiche. Le applicazioni possono creare un numero qualsiasi di tavolozze logiche, usandole per contesti di dispositivo separati o spostandole tra di esse per un singolo contesto di dispositivo. Il numero massimo di tavolozze che un'applicazione può creare dipende dalle risorse del sistema.
Un'applicazione crea una tavolozza logica usando la funzione CreatePalette . L'applicazione riempie una struttura LOGPALETTE , che specifica il numero di voci e i valori di colore per ogni voce, quindi l'applicazione passa la struttura a CreatePalette. La funzione restituisce un handle di tavolozza usato dall'applicazione in tutte le operazioni successive per identificare la tavolozza. Per usare i colori nella tavolozza logica, l'applicazione seleziona la tavolozza in un contesto di dispositivo usando la funzione SelectPalette e quindi realizza la tavolozza usando la funzione RealizePalette . I colori nella tavolozza sono disponibili non appena viene realizzata la tavolozza logica.
Un'applicazione deve limitare le dimensioni delle tavolozze logiche a voci sufficienti per rappresentare i colori necessari. Le applicazioni non possono creare tavolozze logiche superiori alle dimensioni massime della tavolozza, un valore dipendente dal dispositivo. Le applicazioni possono ottenere le dimensioni massime usando la funzione GetDeviceCaps per recuperare il valore SIZEPALETTE.
Sebbene un'applicazione possa specificare qualsiasi valore di colore per una determinata voce in una tavolozza logica, non tutti i colori possono essere generati dal dispositivo specificato. Il sistema non fornisce un modo per individuare i colori supportati, ma l'applicazione può individuare il numero totale di questi colori recuperando la risoluzione dei colori del dispositivo. La risoluzione dei colori, specificata in bit di colore per pixel, è uguale al valore COLORRES restituito dalla funzione GetDeviceCaps . Un dispositivo con una risoluzione dei colori pari a 18 ha 262.144 colori possibili. Se un'applicazione richiede un colore non supportato, il sistema sceglie un'approssimazione appropriata.
Dopo aver creato una tavolozza logica, un'applicazione può modificare i colori nella tavolozza usando la funzione SetPaletteEntries . Se la tavolozza logica è stata selezionata e realizzata, la modifica della tavolozza non influisce immediatamente sui colori visualizzati. L'applicazione deve usare le funzioni Unobject e RealizePalette per aggiornare i colori. In alcuni casi, l'applicazione potrebbe dover deselezionare, deselezionare, selezionare e realizzare la tavolozza logica per assicurarsi che i colori vengano aggiornati esattamente come richiesto. Se un'applicazione seleziona una tavolozza logica in più contesti di dispositivo, le modifiche apportate al riquadro logico influiscono su tutti i contesti di dispositivo per cui è selezionata.
Un'applicazione può modificare il numero di voci in una tavolozza logica usando la funzione ResizePalette . Se l'applicazione riduce le dimensioni, le voci rimanenti rimangono invariate. Se l'applicazione estende le dimensioni, il sistema imposta il colore per ogni nuova voce su nero (0, 0, 0) e il flag su zero.
Un'applicazione può recuperare i valori di colore e flag per le voci in una determinata tavolozza logica usando la funzione GetPaletteEntries . Un'applicazione può recuperare l'indice per la voce in una determinata tavolozza logica che corrisponde più strettamente a un valore di colore specificato usando la funzione GetNearestPaletteIndex .
Quando un'applicazione non richiede più una tavolozza logica, può eliminarla usando la funzione DeleteObject . L'applicazione deve assicurarsi che la tavolozza logica non sia più selezionata in un contesto di dispositivo prima di eliminare la tavolozza.