Ayuda de puntuación alta Cómo cargar un mapa de bits y obtener el valor de píxel del mapa de bits en VC++
La carga de mapas de bits se puede realizar utilizando LoadBitmap(), que tiene dos formas sobrecargadas
BOOL LoadBitmap( LPCTSTR lpszRecourceName );
BOOL LoadBitmap( UINT nIDResource );
Parámetros: lpszResourceName apunta a una cadena que contiene el nombre del recurso de mapa de bits (la cadena termina en nulo).
nIDResource especifica el número de identificación del recurso en el recurso de mapa de bits.
Para obtener el mapa de bits, puede utilizar GetBitmapBits()
DWORD GetBitmapBits( DWORD dwCount, LPVOID lpBits ) const;
CBitmap::GetBitmap
int GetBimap( BITMAP* pBitMap );
Valor de retorno: devuelve un valor distinto de cero cuando la llamada es exitosa; de lo contrario, es 0.
Parámetros: pBitMap es un puntero que apunta a la estructura BITMAP y no puede ser NULL.
Descripción:
Esta función se utiliza para ver la información del objeto CBitmap. La información devuelta se almacena en la estructura BITMAP a la que apunta pBitMap.
La estructura BITMAP es la siguiente:
La estructura BITMAP tiene la siguiente forma:
typedef struct tagBITMAP
{ /* bm */
int bmType;
int bmWidth;
int bmHeight;
int bmWidthBytes;
BYTE bmPlanes;
BYTE bmBitsPixel;
LPVOID bmBits;
} BITMAP;
La estructura BITMAP define el alto, ancho y formato de color. y bits del valor del mapa de bits lógico.
Miembros: bmType especifica el tipo de mapa de bits. Para mapas de bits lógicos, este miembro debe ser 0.
bmWidth especifica el ancho del mapa de bits en píxeles. El ancho debe ser mayor que 0.
bmHeight especifica la altura del mapa de bits, en unidades de líneas de escaneo. La altura debe ser mayor que 0.
bmWidthBytes especifica el número de bytes en cada línea de exploración. Este valor debe ser un número par porque la interfaz de dispositivo gráfico (GDI) supone que los valores de bits en el mapa de bits forman una matriz de números enteros (2 bytes). En otras palabras, bmWidthBytes*8 debe ser un múltiplo de 16, mayor o igual al valor de bmWidth multiplicado por bmBitsPixel.
bmPlanes especifica el número de planos de color en el mapa de bits.
bmBitsPixel especifica el número de bits de color necesarios en cada plano de bits para definir un píxel.
bmBits apunta a la posición del valor del bit en el mapa de bits. El miembro bmBits debe ser un puntero largo a una matriz de un solo byte.
Nota:
Los formatos de mapa de bits utilizados actualmente incluyen monocromo y color. Los mapas de bits monocromáticos utilizan un formato de plano de un bit por bit. Cada línea de exploración es múltiplo de 16.
Para un mapa de bits monocromático de altura n, las líneas de escaneo se organizan de la siguiente manera:
Escaneo 0
Escaneo 1
.
.
.
Escanear n-2
Escanear n-1
Píxeles de un solo color en el dispositivo son blancos o negros. Si el bit correspondiente en el mapa de bits es 1, el píxel se enciende (blanco).
Si el bit correspondiente es 0, el píxel se apaga (negro).
Los mapas de bits son compatibles con todos los dispositivos con el bit RC_BITBLT, que se establece en el índice RASTERCAPS de la función miembro CDC::GetDeviceCaps.
Cada dispositivo tiene su propio formato de color. Para transferir mapas de bits entre diferentes dispositivos, utilice las funciones GetDIBits y SetDIBits de Windows.
Te doy un ejemplo:
CBitmap m_bmp;
BITMAP *pBitMap;
m_bmp.LoadBitmap("d:\\ Imagen \\Imagen de ejemplo\\flower.bmp");//Cargar mapa de bits
m_bmp.GetBitmap(pBitMap);//Obtener información de mapa de bits
int i,j;
DWORD color=pBitMap->bmBits[i*pBitMap->bmHeight+pBitMap->bmWidth];//Accede al valor de color del píxel en la fila i y la columna j