BITMAP

Bitmap Data Structure

The BITMAP structure defines the height, width, color format, and bit values of a logical bitmap.

typedef struct tagBITMAP {

short bmType;

short bmWidth;

short bmHeight;

short bmWidthBytes;

BYTE bmPlanes;

BYTE bmBitsPixel;

LPSTR bmBits;

} BITMAP;

The BITMAP structure has the following fields:

Field Description  

bmType Specifies the bitmap type. For logical bitmaps, the bmType field must be zero.  
bmWidth Specifies the width of the bitmap (in pixels). The width must be greater than zero.  
bmHeight Specifies the height of the bitmap (in raster lines). The height must be greater than zero.  
bmWidthBytes Specifies the number of bytes in each raster line. This value must be an even number since the graphics device interface (GDI) assumes that the bit values of a bitmap form an array of integer (two-byte) values. In other words, bmWidthBytes ´ 8 must be the next multiple of 16 greater than or equal to the bmWidth field.  
bmPlanes Points to the number of color planes in the bitmap.  
bmBitsPixel Points to the number of adjacent color bits on each plane needed to define a pixel.  
bmBits Points to the location of the bit values for the bitmap. The bmBits field must be a long pointer to an array of character (one-byte) values.  

Comments

The currently used bitmap formats are monochrome and color. The monochrome bitmap uses a one-bit, one-plane format. Each scan is a multiple of 16 bits.

Scans are organized as follows for a monochrome bitmap of height n:

Scan 0

Scan 1

.

.

.

Scan n-2

Scan n-1

The pixels on a monochrome device are either black or white. If the corresponding bit in the bitmap is 1, the pixel is turned on (white); if the corresponding bit in the bitmap is zero, the pixel is turned off (black).

All devices that have the RC_BITBLT bit set in the device capabilities support bitmaps.

Each device has its own unique color format. In order to transfer a bitmap from one device to another, use GetDIBits and SetDIBits.

See Also

The CreateBitmapIndirect and GetObject functions in Chapter 4, “Functions Directory.”