Cómo utilizar SetDIBitsToDevice en el cuadro de diálogo
Función: Esta función utiliza mapas de bits DIB y datos de color para configurar los píxeles en el rectángulo especificado en el dispositivo asociado con el entorno del dispositivo de destino. Para Windows 98 y Windows NT 5.0, la función SetDIBitsToDevice se ha ampliado para permitir utilizar una imagen JPEG como imagen de origen.
Prototipo de función: int SetDIBitsToDevice(HDC hdc, int xDest, int Ydest, DWORD dwWidth, DWORD dwHeight, intXSrc, int Ysrc, UINT uStartScan, UINT cScanLines, CONST VOID *lpvBits, CONST BITMAPINFO *lpbmi, UINT fuColorUse);
Parámetros:
hdc: identificador de contexto del dispositivo.
XDest: Especifica la coordenada del eje X de la esquina superior izquierda del rectángulo de destino, expresada en unidades lógicas.
YDest: Especifica la coordenada del eje Y de la esquina superior izquierda del rectángulo de destino, expresada en unidades lógicas.
dwWidth: Especifica el ancho del DIB, expresado en unidades lógicas.
dwHeight: Altura: Especifica la altura del DIB, expresada en unidades lógicas.
Xsrc: Especifica la coordenada del eje X de la esquina inferior izquierda del mapa de bits DIB, expresada en unidades lógicas.
YSrc: Especifica la coordenada del eje Y de la esquina inferior izquierda del mapa de bits DIB, expresada en unidades lógicas.
uScanLines: Especifica las líneas de escaneo iniciales en el DIB.
cScanLInes: Especifica el número de líneas de escaneo DIB contenidas en la matriz señalada por el parámetro lpvBits.
lpvBits: Puntero a una matriz de bytes que almacena datos de color DIB. Consulte la sección de Notas a continuación para obtener más detalles.
lpbmi: Puntero a una estructura BITMAPINFO que contiene información DIB.
fuColorUse: puntero que indica si el miembro bmiColors en la estructura BITMAPINFO contiene valores RGB explícitos o valores de índice de paleta. Consulte la sección de Notas a continuación para obtener más detalles.
El parámetro fuColorUse debe tener uno de los siguientes valores, y su significado es el siguiente:
DIB__PAL_COLORS: Indica que la tabla de colores consta de una matriz de valores de índice de 16 bits, Se utiliza para indexar las muestras de color lógicas seleccionadas actualmente.
DIB_RGB_COLORS: Indica que la tabla de colores consta de valores RGB sin procesar.
Valor de retorno: si la función se ejecuta correctamente, el valor de retorno es el número establecido de líneas de escaneo; si la función falla, el valor de retorno es 0.
Windows NT: Para obtener información adicional sobre errores, llame a la función GetLastError.
Windows 98, NT 5.0 y posteriores: si el controlador no admite la imagen del archivo JPEG pasada a la función SetDIBitsToDevice, la función falla y devuelve GDI_ERROR.
Nota: La velocidad óptima de dibujo de mapas de bits se logra cuando los bits del mapa de bits se indexan en la paleta del sistema. Una aplicación puede recuperar los valores de color e índice de la paleta del sistema llamando a la función GetSystemPaletteEntries. Para obtener más información sobre la paleta del sistema, consulte Colores.
Los mapas de bits DIB de abajo hacia arriba comienzan desde la esquina inferior izquierda del mapa de bits, mientras que los DIB de arriba hacia abajo comienzan desde la esquina superior izquierda.
Para reducir la cantidad de memoria necesaria para configurar los bits de un mapa de bits DIB grande, una aplicación puede agrupar la salida llamando repetidamente a SetDIBitsToBevice, colocando cada vez diferentes partes del mapa de bits en la matriz lpvBits. Los valores de los parámetros uStartScan y cScanLines determinan la porción del mapa de bits contenida en la matriz lpvBits. Si un proceso que se ejecuta en segundo plano llama a la función SetDIBitsToDevice mientras se ejecuta una sesión de MS DOS en pantalla completa en primer plano, la función devuelve un error.
Para Windows 98, Windows NT 5.0 y posteriores; si el miembro biCompression en BITMAPINFOHEADER es BI_JPEG, lpvBits apunta al búfer que contiene la imagen JPEG. Si el tamaño de este búfer lo especifica el miembro bV4SizeImage en la estructura BITMAPV4HEADER, el parámetro fuColorUse debe establecerse en DIB_RGB_COLORS. Si el miembro bV5Compression en la estructura BITMAPV5HEADER es BI_JPEG, el parámetro lpbBits apuntará al búfer que contiene la imagen JPEG. El parámetro lpbSizeImage en la estructura BITMAPV4HEADER debe establecerse en DIB_RGB_COLORS. El miembro bV5SizeImage en la estructura especifica el tamaño del búfer y el parámetro fuColorUse debe establecerse en DIB_RGB_COLORS.
ICM: Realiza operaciones de gestión del color. Si la estructura BITMAPINFO especificada no es BITMAPV4HEADER o BITMAPV5HEADER, el perfil de color del entorno del dispositivo actual se utiliza como perfil de color de origen. Si la estructura BITMAPINFO no es BITMAPV4HEADER o BITMAPV5HEADER, se utilizan colores RGB. Si la estructura BITMAPINFO especificada es BITMAPV4HEADER o BITMAPV5HEADER, el perfil de color asociado con el mapa de bits se utiliza como color de origen.