19,472
社区成员




void drawDIB(int width, int height, byte *bmpData)
{
BITMAPINFO bmpinfo; //位图信息结构,包含位图信息头和位图颜色信息
//位图信息头结构
bmpinfo.bmiHeader.biSize = sizeof(BITMAPINFO); //本结构所占用的字节数
bmpinfo.bmiHeader.biWidth = width; //位图宽度,以像素为单位
bmpinfo.bmiHeader.biHeight = height; //位图高度,以像素为单位
bmpinfo.bmiHeader.biPlanes = 1; //目标设备的级别,必须为1
bmpinfo.bmiHeader.biBitCount = 32; //每个像素所需的位数,必须为1,4,8,24,32
bmpinfo.bmiHeader.biCompression = 0; //位图压缩类型,必须为0,1,2
bmpinfo.bmiHeader.biSizeImage = width * height; //位图大小,以字节为单位
bmpinfo.bmiHeader.biXPelsPerMeter = 0; //位图水平分辨率,每米像素数
bmpinfo.bmiHeader.biYPelsPerMeter = 0; //位图垂直分辩率,每米象素数
bmpinfo.bmiHeader.biClrUsed = 0; //位图实际使用的颜色表中的颜色数
bmpinfo.bmiHeader.biClrImportant = 0; //位图显示过程中重要的颜色数
CRect rc;
g_pDlg->GetClientRect(&rc);
HDC hdc = ::GetDC(g_pDlg->GetSafeHwnd());
//显示
::SetDIBitsToDevice(
hdc,
0,
0,
rc.Width(),
rc.Height(),
0,
0,
0,
height,
bmpData,
&bmpinfo,
DIB_PAL_COLORS
);
}
int SetDIBits(
HDC hdc, // handle to DC
HBITMAP hbmp, // handle to bitmap
UINT uStartScan, // starting scan line
UINT cScanLines, // number of scan lines
CONST VOID *lpvBits, // array of bitmap bits
CONST BITMAPINFO *lpbmi, // bitmap data
UINT fuColorUse // type of color indexes to use
);