wingdi.h


GetDIBits

La función GetDIBits recupera los bits de un mapa de bits especificado y los copia en un buffer usando el formato especificado.

Sintaxis

int GetDIBits(
    HDC hdc,           // manipulador de contexto de dispositivo
    HBITMAP hbmp,      // manipulador de mapa de bits
    UINT uStartScan,   // primera línea a colocar en el mapa de bits de destino
    UINT cScanLines,   // número de líneas a copias
    LPVOID lpvBits,    // dirección del array de bits del mapa de bits
    LPBITMAPINFO lpbi, // dirección de estructura con datos del mapa de bits
    UINT uUsage        // RGB o índices de paleta
   );

Parámetros

hdc: identifica el contexto de dispositivo.

hbmp: identifica el mapa de bits.

uStartScan: especifica la primera línea a recuperar.

cScanLines: especifica el número de líneas a recuperar.

lpvBits: apunta a un buffer para recibir los datos del mapa de bits. Si este parámetro es NULL, la función pasa las dimensiones y formato del mapa de bits a la estructura BITMAPINFO apuntada por el parámetro lpbi.

lpbi: apunta a una estructura BITMAPINFO que especifica el formato deseado para los datos del mapa de bits independiente del dispositivo (DIB).

uUsage: especifica el formato del miembro bmiColors de la estructura BITMAPINFO. Debe ser uno de los siguientes valores:

Valor Significado
DIB_PAL_COLORS La tabla de colores debe consistir en un array de índices de 16 bits dentro de la paleta lógica actual.
DIB_RGB_COLORS La tabla de colores debe consistir en valores literales de rojo, verde y azul (RGB).

Valor de retorno

Si el parámetro lpvBits no es NULL y la función tiene éxito, el valor de retorno es el número de líneas copiadas desde el mapa de bits.

Windows 95: si el parámetro lpvBits es NULL y GetDIBits completa adecuadamente la estructura BITMAPINFO, el valor de retorno es el número total de líneas en el mapa de bits.

Windows NT: si el parámetro lpvBits es NULL y GetDIBits completa adecuadamente la estructura BITMAPINFO, el valor de retorno es distinto de cero.

Si la función falla, el valor de retorno es cero.

Observaciones

Si el formato requerido para un DIB coincide con su formato interno, los valores RGB para el mapa de bits se copian. Si el formato requerido no coincide con el formato interno, se sintetiza una tabla de colores. La siguiente tabla describe la tabla de colores sintetizada para cada formato.

Valor Significado
1_BPP La tabla de colores consiste en una entrada negra y una blanca.
4_BPP La tabla de colores consiste en una mezcla de colores idéntica a la paleta estándar VGA.
8_BPP La tabla de colores consiste en una mezcla genera de 256 colores definidos por el GDI. (Incluidos en esos 256 colores están los 20 colores encontrados en la paleta lógica por defecto.)
24_BPP No se devuelve tabla de colores.

Si el parámetro lpvBits es un puntero válido, los primeros seis miembros de la estructura BITMAPINFOHEADER deben ser inicializados para especificar el tamaño y formato del DIB. Nótese que un DIB de abajo-arriba se especifica mediante un valor de altura positivo, mientras que uno de arriba-abajo se especifica mediante un valor de altura negativo. La tabla de colores de mapa de bits puede ser añadida a la estructura BITMAPINFO.

Si lpvBits es NULL, GetDIBits examina el primer miembro de la primera estructura apuntada por lpbi. Este miembro debe especifica el tamaño, en bytes, de una estructura BITMAPCOREHEADER o de una estructura BITMAPINFOHEADER. La función usa el tamaño especificado para determinar como se deben inicializar el resto de los miembros.

Si lpvBits es NULL y el miembro de cuenta de bits de BITMAPINFO se inicializa a cero, GetDIBits rellena la estructura BITMAPINFOHEADER o BITMAPCOREHEADER sin la tabla de colores. Esta técnica puede usarse para consultar los atributos de un mapa de bits.

El mapa de bits identificado por el parámetro hbmp no debe estar seleccionado dentro de un contexto de dispositivo cuando la aplicación llame a esta función.

El origen de un DIB de abajo-arriba es la esquina inferior izquierda del mapa de bits; el origen de un DIB de arriba-abajo es la esquina superior izquierda.