Paletas

Las funciones DrawDib requieren que una aplicación responda a dos mensajes orientados a paletas: WM_QUERYNEWPALETTE y WM_PALETTECHANGED. Si la aplicación no es compatible con la paleta, deberá agregar un controlador para cada uno de estos mensajes. Para obtener más información sobre cómo procesar los mensajes de WM_QUERYNEWPALETTE y WM_PALETTECHANGED , vea Agregar controladores de mensajes de paleta.

Puede realizar la paleta DrawDib actual en el controlador de dominio mediante la función DrawDibRealize . Debe darse cuenta de la paleta en respuesta al mensaje WM_QUERYNEWPALETTE o WM_PALETTECHANGED , o cuando se prepara para mostrar una secuencia de imágenes mediante la función DrawDibDraw .

Puede dibujar una imagen asignada a otra paleta mediante la función DrawDibSetPalette . Esta función obliga al controlador de dominio DrawDib a usar la paleta especificada, lo que puede afectar a la calidad de la imagen. Por ejemplo, una aplicación que tenga en cuenta la paleta podría haber realizado una paleta y debe impedir que DrawDib se realice su propia paleta. La aplicación puede usar DrawDibSetPalette para notificar a DrawDib de la paleta que se va a usar.

Puede obtener un identificador de la paleta de primer plano actual mediante la función DrawDibGetPalette . Si la aplicación usa la paleta de primer plano actual, no tiene un uso exclusivo de la paleta y otra aplicación puede invalidar el identificador de paleta. La aplicación no debe liberar la paleta cuando termine de usarla. Liberar la paleta podría invalidar el identificador de paleta para otra aplicación.

Puede preparar DrawDib para recibir nuevos valores de color para su paleta mediante la función DrawDibChangePalette . En el código siguiente a DrawDibChangePalette, se asignan nuevos valores para la tabla de colores de paleta. Si la marca de DDF_ANIMATE no se establece en drawDib DC al llamar a DrawDibChangePalette, puede aplicar los cambios de paleta mediante DrawDibRealize para realizar la paleta. A continuación, puede usar DrawDibDraw para volver a dibujar la imagen. Si la marca de DDF_ANIMATE está establecida en drawDib DC, puede animar la paleta y los colores del mapa de bits mostrado mediante DrawDibDraw o DrawDibRealize. Puede actualizar la marca de DDF_ANIMATE mediante las funciones DrawDibEnd y DrawDibBegin .

Nota

Si libera la paleta DrawDib mientras está seleccionada por un controlador de dominio, un error de interfaz de dispositivo gráfico (GDI) puede dar lugar cuando el controlador de dominio usa la paleta. En su lugar, la aplicación debe usar DrawDibSetPalette para cambiar el controlador de dominio DrawDib para usar la paleta predeterminada u otra paleta.

 

Las funciones DrawDibEnd, DrawDibClose y DrawDibBegin pueden liberar la paleta DrawDib. Sin embargo, estas funciones solo se deben usar cuando el controlador de dominio no haya seleccionado la paleta. La función DrawDibDraw también puede liberar la paleta cuando usa el mismo DrawDib DC, pero especifica distintos parámetros de dibujo (lpbi, dxDst, dyDst, dxSrc o dySrc) o un formato diferente.

Representación de imágenes