Paletten

Die DrawDib-Funktionen erfordern, dass eine Anwendung auf zwei palettenorientierte Nachrichten reagiert: WM_QUERYNEWPALETTE und WM_PALETTECHANGED. Wenn Ihre Anwendung nicht palettenfähig ist, müssen Sie für jede dieser Nachrichten einen Handler hinzufügen. Weitere Informationen zur Verarbeitung der WM_QUERYNEWPALETTE und WM_PALETTECHANGED Meldungen finden Sie unter Hinzufügen von Paletten-Nachrichtenhandlern.

Sie können die aktuelle DrawDib-Palette mit dem DC mithilfe der DrawDibRealize-Funktion realisieren. Sie sollten die Palette als Reaktion auf die WM_QUERYNEWPALETTE - oder WM_PALETTECHANGED-Nachricht erkennen oder wenn Sie die Anzeige einer Bildsequenz mithilfe der DrawDibDraw-Funktion vorbereiten.

Sie können ein Bild zeichnen, das einer anderen Palette zugeordnet ist, indem Sie die DrawDibSetPalette-Funktion verwenden. Diese Funktion erzwingt, dass der DrawDib DC die angegebene Palette verwendet, was sich auf die Bildqualität auswirken kann. Beispielsweise könnte eine Anwendung, die palettenfähig ist, eine Palette realisiert haben und drawDib daran hindern, eine eigene Palette zu realisieren. Die Anwendung kann DrawDibSetPalette verwenden, um DrawDib über die zu verwendende Palette zu benachrichtigen.

Sie können ein Handle der aktuellen Vordergrundpalette abrufen, indem Sie die DrawDibGetPalette-Funktion verwenden. Wenn Ihre Anwendung die aktuelle Vordergrundpalette verwendet, wird die Palette nicht exklusiv verwendet, und eine andere Anwendung kann das Palettenhandle ungültig machen. Ihre Anwendung sollte die Palette nicht freigeben, wenn Sie die Verwendung abgeschlossen haben. Durch das Freigeben der Palette könnte das Palettenhandle für eine andere Anwendung ungültig werden.

Sie können DrawDib mit der DrawDibChangePalette-Funktion darauf vorbereiten, neue Farbwerte für seine Palette zu erhalten. Im code following DrawDibChangePalette, you assign new values for the palette color table. Wenn das DDF_ANIMATE-Flag im DrawDib DC beim Aufrufen von DrawDibChangePalette nicht festgelegt ist, können Sie die Palettenänderungen mithilfe von DrawDibRealize umsetzen, um die Palette zu realisieren. Anschließend können Sie drawDibDraw verwenden, um das Bild neu zu zeichnen. Wenn das flag DDF_ANIMATE im DrawDib DC festgelegt ist, können Sie die Palette und die Farben der angezeigten Bitmap mithilfe von DrawDibDraw oder DrawDibRealize animieren. Sie können das DDF_ANIMATE-Flag mithilfe der Funktionen DrawDibEnd und DrawDibBegin aktualisieren.

Hinweis

Wenn Sie die DrawDib-Palette freigeben, während sie von einem DC ausgewählt wird, kann ein GDI-Fehler (Graphics Device Interface) auftreten, wenn der DC die Palette verwendet. Stattdessen sollte Ihre Anwendung DrawDibSetPalette verwenden, um drawDib DC so zu ändern, dass die Standardpalette oder eine andere Palette verwendet wird.

 

Die Funktionen DrawDibEnd, DrawDibClose und DrawDibBegin können die DrawDib-Palette freigeben. Diese Funktionen sollten jedoch nur verwendet werden, wenn die Palette nicht vom DC ausgewählt wurde. Die DrawDibDraw-Funktion kann die Palette auch freigeben, wenn sie denselben DrawDib DC verwendet, aber unterschiedliche Zeichnungsparameter (lpbi, dxDst, dyDst, dxSrc oder dySrc) oder ein anderes Format angibt.

Bildrendering