Palettes

Les fonctions DrawDib nécessitent qu’une application réponde à deux messages orientés palette : WM_QUERYNEWPALETTE et WM_PALETTECHANGED. Si votre application n’est pas consciente de la palette, vous devez ajouter un gestionnaire pour chacun de ces messages. Pour plus d’informations sur le traitement des messages WM_QUERYNEWPALETTE et WM_PALETTECHANGED , consultez Ajout de gestionnaires de messages de palette.

Vous pouvez réaliser la palette DrawDib actuelle sur le contrôleur de domaine à l’aide de la fonction DrawDibRealize . Vous devez réaliser la palette en réponse au message WM_QUERYNEWPALETTE ou WM_PALETTECHANGED , ou lorsque vous préparez à afficher une séquence d’images à l’aide de la fonction DrawDibDraw .

Vous pouvez dessiner une image mappée à une autre palette à l’aide de la fonction DrawDibSetPalette . Cette fonction force le contrôleur de domaine DrawDib à utiliser la palette spécifiée, ce qui peut affecter la qualité de l’image. Par exemple, une application prenant en charge la palette peut avoir réalisé une palette et doit empêcher DrawDib de réaliser sa propre palette. L’application peut utiliser DrawDibSetPalette pour notifier DrawDib de la palette à utiliser.

Vous pouvez obtenir un handle de la palette de premier plan actuelle à l’aide de la fonction DrawDibGetPalette . Si votre application utilise la palette de premier plan actuelle, elle n’a pas d’utilisation exclusive de la palette et une autre application peut invalider le handle de palette. Votre application ne doit pas libérer la palette lorsque vous avez terminé de l’utiliser. La libération de la palette peut invalider le handle de palette pour une autre application.

Vous pouvez préparer DrawDib à recevoir de nouvelles valeurs de couleur pour sa palette à l’aide de la fonction DrawDibChangePalette . Dans le code suivant DrawDibChangePalette, vous attribuez de nouvelles valeurs pour la table de couleurs de palette. Si l’indicateur DDF_ANIMATE n’est pas défini dans le contrôleur de domaine DrawDib lorsque vous appelez DrawDibChangePalette, vous pouvez appliquer les modifications de palette à l’aide de DrawDibRealize pour réaliser la palette. Vous pouvez ensuite utiliser DrawDibDraw pour redessiner l’image. Si l’indicateur DDF_ANIMATE est défini dans le contrôleur de domaine DrawDib, vous pouvez animer la palette et les couleurs de l’image bitmap affichée à l’aide de DrawDibDraw ou DrawDibRealize. Vous pouvez mettre à jour l’indicateur DDF_ANIMATE à l’aide des fonctions DrawDibEnd et DrawDibBegin.

Remarque

Si vous libèrez la palette DrawDib pendant qu’elle est sélectionnée par un contrôleur de domaine, une erreur GDI (Graphics Device Interface) peut se produire lorsque le contrôleur de domaine utilise la palette. Au lieu de cela, votre application doit utiliser DrawDibSetPalette pour modifier le contrôleur de domaine DrawDib pour utiliser la palette par défaut ou une autre palette.

 

Les fonctions DrawDibEnd, DrawDibClose et DrawDibBegin peuvent libérer la palette DrawDib. Toutefois, ces fonctions doivent être utilisées uniquement lorsque la palette n’a pas été sélectionnée par le contrôleur de domaine. La fonction DrawDibDraw peut également libérer la palette lorsqu’elle utilise le même contrôleur de domaine DrawDib, mais spécifie différents paramètres de dessin (lpbi, dxDst, dyDst, dxSrc ou dySrc) ou un format différent.

Rendu d’image