Paletten

Die DrawDib-Funktionen erfordern, dass eine Anwendung auf zwei palettenorientierte Nachrichten antwortet: WM _ QUERYNEWPALETTE und WM _ PALETTECHANGED. Wenn Ihre Anwendung nicht palettenbewusst ist, müssen Sie für jede dieser Meldungen einen Handler hinzufügen. Weitere Informationen zum Verarbeiten der _ WM-Meldungen QUERYNEWPALETTE und WM _ PALETTECHANGED finden Sie unter Hinzufügen von Palettenmeldungshandlern.

Sie können die aktuelle DrawDib-Palette für den DC mithilfe der DrawDibRealize-Funktion realisieren. Sie sollten die Palette als Reaktion auf die WM _ QUERYNEWPALETTE- oder WM _ PALETTECHANGED-Meldung oder bei der Vorbereitung auf die Anzeige einer Bildsequenz mithilfe der DrawDibDraw-Funktion erkennen.

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 Imagequalität auswirken kann. Beispielsweise könnte eine Anwendung, die palettenbewusst ist, eine Palette erkannt 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 mithilfe der DrawDibGetPalette-Funktion abrufen. 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 sie nicht mehr verwenden. Durch das Freigeben der Palette kann das Palettenhandle für eine andere Anwendung ungültig werden.

Mithilfe der DrawDibChangePalette-Funktion können Sie DrawDib auf den Empfang neuer Farbwerte für die Palette vorbereiten. Im Code nach DrawDibChangePalette weisen Sie neue Werte für die Farbtabelle der Palette zu. Wenn das DDF _ ANIMATE-Flag beim Aufrufen von DrawDibChangePalette im DrawDib-DC nicht festgelegt ist, können Sie die Palettenänderungen mit DrawDibRealize umsetzen, um die Palette zu realisieren. Anschließend können Sie DrawDibDraw verwenden, um das Bild neu zu zeichnen. Wenn das DDF _ ANIMATE-Flag im DrawDib-DC festgelegt ist, können Sie die Palette und die Farben der angezeigten Bitmap mit 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 den DrawDib-DC so zu ändern, dass er die Standardpalette oder eine andere Palette verwendet.

Die Funktionen DrawDibEnd, DrawDibCloseund 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 auch die Palette freigeben, wenn sie denselben DrawDib-DC verwendet, aber verschiedene Zeichnungsparameter (lpbi, dxDst, dyDst, dxSrc oder dySrc) oder ein anderes Format angibt.

Bildrendering