Compartir vía


Dibujar imágenes a partir de una lista de imágenes

Para dibujar una imagen, use la función miembro CImageList::D raw. Especificará un puntero a un objeto de contexto de dispositivo, el índice de la imagen que se va a dibujar, la ubicación en el contexto de dispositivo en el que se va a dibujar la imagen y un conjunto de marcas para indicar el estilo de dibujo.

Cuando se especifica el estilo ILD_TRANSPARENT, Draw usa un proceso de dos pasos para dibujar una imagen enmascarada. En primer lugar, realiza una operación AND lógica en los bits de la imagen y los bits de la máscara. A continuación, realiza una operación XOR lógica en los resultados de la primera operación y los bits de fondo del contexto del dispositivo de destino. Este proceso crea áreas transparentes en la imagen resultante; es decir, cada bit blanco de la máscara hace que el bit correspondiente de la imagen resultante sea transparente.

Antes de dibujar una imagen enmascarada en un fondo de color sólido, debe usar la función miembro SetBkColor para establecer el color de fondo de la lista de imágenes en el mismo color que el destino. Establecer el color elimina la necesidad de crear áreas transparentes en la imagen y permite que Draw simplemente copie la imagen en el contexto del dispositivo de destino, lo que da como resultado un aumento significativo del rendimiento. Para dibujar la imagen, especifique el estilo ILD_NORMAL al llamar a Draw.

Puede establecer el color de fondo de una lista de imágenes enmascaradas (CImageList) en cualquier momento para que se dibuje correctamente en cualquier fondo sólido. Establecer el color de fondo en CLR_NONE hace que las imágenes se dibujen transparentemente de manera predeterminada. Para recuperar el color de fondo de una lista de imágenes, use la función miembro GetBkColor.

Los estilos ILD_BLEND25 y ILD_BLEND50 interpolan la imagen con el color de resaltado del sistema. Estos estilos resultan útiles si usa una imagen enmascarada para representar un objeto que el usuario puede seleccionar. Por ejemplo, puede usar el estilo ILD_BLEND50 para dibujar la imagen cuando el usuario la selecciona.

Una imagen sin máscara se copia en el contexto del dispositivo de destino mediante la operación de trama SRCCOPY. Los colores de la imagen parecen iguales independientemente del color de fondo del contexto de dispositivo. Los estilos de dibujo que se especifican en Draw tampoco tienen ningún efecto en el aspecto de una imagen sin máscara.

Además de la función miembro Draw, otra función, DrawIndirect, amplía la capacidad de representar una imagen. DrawIndirect toma una estructura IMAGELISTDRAWPARAMS como parámetro. Esta estructura se puede usar para personalizar la representación de la imagen actual, incluido el uso de códigos de operación de trama (ROP). Para más información sobre los códigos ROP, consulte Códigos de operación de trama and Mapas de bits como pinceles en Windows SDK.

Consulte también

Uso de CImageList
Controles