Freigeben über


Paletten

[Das dieser Seite zugeordnete Feature, DrawDib-, ist ein Legacyfeature. Es wurde von MediaComposition-Klasseabgelöst. MediaComposition-Klasse wurde für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, MediaComposition-Klasse anstelle von DrawDib-zu verwenden. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, um die neuen APIs zu verwenden, falls möglich umgeschrieben werden.]

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 zum Verarbeiten der WM_QUERYNEWPALETTE und WM_PALETTECHANGED Nachrichten finden Sie unter Hinzufügen von Paletten-Nachrichtenhandlern.

Sie können die aktuelle DrawDib-Palette auf dem DC mithilfe der DrawDibReal-Funktion realisieren. Sie sollten die Palette als Reaktion auf die WM_QUERYNEWPALETTE oder WM_PALETTECHANGED Nachricht erkennen oder sich darauf vorbereiten, eine Bildsequenz mithilfe der DrawDibDraw--Funktion anzuzeigen.

Sie können ein Bild zeichnen, das einer anderen Palette zugeordnet ist, indem Sie die DrawDibSetPalette--Funktion verwenden. Diese Funktion erzwingt die DrawDib DC,die angegebene Palette zu verwenden, was sich auf die Bildqualität auswirken kann. Eine Anwendung, die palettenfähig ist, hat beispielsweise eine Palette realisiert und muss verhindern, dass DrawDib seine eigene Palette erkennt. Die Anwendung kann DrawDibSetPalette verwenden, um DrawDib über die zu verwendende Palette zu benachrichtigen.

Mit der DrawDibGetPalette-Funktion können Sie ein Handle der aktuellen Vordergrundpalette abrufen. Wenn Ihre Anwendung die aktuelle Vordergrundpalette verwendet, hat sie keine ausschließliche Verwendung der Palette, und eine andere Anwendung kann den Palettenhandle ungültig machen. Ihre Anwendung sollte die Palette nicht freigeben, wenn Sie sie fertig stellen. Durch das Freigeben der Palette konnte der Palettenhandle für eine andere Anwendung ungültig werden.

Sie können DrawDib auf den Empfang neuer Farbwerte für die Palette vorbereiten, indem Sie die DrawDibChangePalette-Funktion verwenden. Im code following DrawDibChangePalette, you assign new values for the palette color table. Wenn das DDF_ANIMATE Flag nicht im DrawDib DC festgelegt ist, wenn Sie DrawDibChangePaletteaufrufen, können Sie die Palettenänderungen mithilfe von DrawDib ausführen, 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 mithilfe von DrawDibDraw oder DrawDibanimieren. Sie können das DDF_ANIMATE-Flag mithilfe der DrawDibEnd- und DrawDibBegin--Funktionen aktualisieren.

Anmerkung

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 die DrawDib DC zu ändern, um die Standardpalette oder eine andere Palette zu verwenden.

 

Die DrawDibEnd, DrawDibCloseund DrawDibBegin Funktionen 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 verschiedene Zeichnungsparameter angibt (lpbi, dxDst, dyDst, dxSrc, oder dySrc) oder ein anderes Format.

Bildrendering-