Tavolozze
[La funzionalità associata a questa pagina, DrawDib, è una funzionalità legacy. È stata sostituita da classe MediaComposition. classe MediaComposition è stata ottimizzata per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi classe MediaComposition anziché DrawDib, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Le funzioni DrawDib richiedono che un'applicazione risponda a due messaggi orientati alla tavolozza: WM_QUERYNEWPALETTE e WM_PALETTECHANGED. Se l'applicazione non è compatibile con la 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 del riquadro.
È possibile realizzare la tavolozza DrawDib corrente al controller di dominio usando la funzioneDrawDib Realize. È 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 funzioneDrawDibDraw.
È possibile disegnare un'immagine mappata a un'altra tavolozza usando la funzionedrawDibSetPalette. Questa funzione forza il controller di dominio DrawDib a usare la tavolozza specificata, che può influire sulla qualità dell'immagine. Ad esempio, un'applicazione che riconosce la tavolozza potrebbe aver realizzato una tavolozza e deve impedire a DrawDib di realizzare la propria tavolozza. L'applicazione può usare DrawDibSetPalette per notificare a DrawDib la tavolozza da usare.
È possibile ottenere un handle della tavolozza di primo piano corrente usando la funzioneDrawDibGetPalette. Se l'applicazione usa la tavolozza di primo piano corrente, non ha un 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 tavolozza usando la funzioneDrawDibChangePalette. Nel codice seguente DrawDibChangePaletteassegnare 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 DrawDibMak per realizzare la tavolozza. È quindi possibile usare DrawDibDraw per ridisegnare l'immagine. Se il flag DDF_ANIMATE è impostato nel controller di dominio DrawDib, è possibile animare la tavolozza e i colori della bitmap visualizzata usando DrawDibDraw o DrawDibDraw. È 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. L'applicazione deve invece usare DrawDibSetPalette per modificare il controller di dominio DrawDib per usare la tavolozza predefinita o un'altra tavolozza.
Le funzioni DrawDibEnd, DrawDibClosee 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 controller di dominio DrawDib, ma specifica parametri di disegno diversi (lpbi, dxDst, dyDst, dxSrco dySrc) o un formato diverso.
Argomenti correlati