Tavolozze

Le funzioni DrawDib richiedono che un'applicazione risponda a due messaggi orientati al tavolozza: WM_QUERYNEWPALETTE e WM_PALETTECHANGED. Se l'applicazione non è a conoscenza del tavolozza, sarà necessario aggiungere un gestore per ognuno di questi messaggi. Per altre informazioni sull'elaborazione dei messaggi di WM_QUERYNEWPALETTE e WM_PALETTECHANGED , vedere Aggiunta di gestori messaggi di tavolozza.

È possibile realizzare la tavolozza DrawDib corrente al controller di dominio usando la funzione DrawDibRealize . È necessario realizzare la tavolozza in risposta al messaggio WM_QUERYNEWPALETTE o WM_PALETTECHANGED oppure quando si prepara a visualizzare una sequenza di immagini usando la funzione DrawDibDraw .

È possibile disegnare un'immagine mappata a un'altra tavolozza usando la funzione DrawDibSetPalette . Questa funzione impone a DrawDib DC di usare la tavolozza specificata, che può influire sulla qualità dell'immagine. Ad esempio, un'applicazione che è a conoscenza del tavolozza potrebbe aver realizzato una tavolozza e deve impedire a DrawDib di realizzare la propria tavolozza. L'applicazione può usare DrawDibSetPalette per inviare una notifica a DrawDib della tavolozza da usare.

È possibile ottenere un handle della tavolozza di primo piano corrente usando la funzione DrawDibGetPalette . Se l'applicazione usa la tavolozza di primo piano corrente, non dispone dell'uso esclusivo della tavolozza e un'altra applicazione può invalidare l'handle della tavolozza. L'applicazione non deve liberare la tavolozza al termine dell'uso. Liberare la tavolozza potrebbe invalidare l'handle della tavolozza per un'altra applicazione.

È possibile preparare DrawDib per ricevere nuovi valori di colore per la relativa tavolozza usando la funzione DrawDibChangePalette . Nel codice seguente DrawDibChangePalette si assegnano nuovi valori per la tabella dei colori della tavolozza. Se il flag DDF_ANIMATE non è impostato nel controller di dominio DrawDib quando si chiama DrawDibChangePalette, è possibile applicare le modifiche della tavolozza usando DrawDibRealize per realizzare la tavolozza. È quindi possibile usare DrawDibDraw per ridisegnare l'immagine. Se il flag di DDF_ANIMATE è impostato nel controller di dominio DrawDib, è possibile animare la tavolozza e i colori della bitmap visualizzata usando DrawDibDraw o DrawDibRealize. È possibile aggiornare il flag di DDF_ANIMATE usando le funzioni DrawDibEnd e DrawDibBegin .

Nota

Se si libera la tavolozza DrawDib mentre è selezionata da un controller di dominio, un errore GDI (Graphics Device Interface) può causare quando il controller di dominio usa la tavolozza. In alternativa, l'applicazione deve usare DrawDibSetPalette per modificare il controller di dominio DrawDib per usare la tavolozza predefinita o un'altra tavolozza.

 

Le funzioni DrawDibEnd, DrawDibClose e DrawDibBegin possono liberare la tavolozza DrawDib. Tuttavia, queste funzioni devono essere usate solo quando la tavolozza non è stata selezionata dal controller di dominio. La funzione DrawDibDraw può anche liberare la tavolozza quando usa lo stesso dc DrawDib, ma specifica parametri di disegno diversi (lpbi, dxDst, dyDst, dxSrc odySrc) o un formato diverso.

Rendering delle immagini