控制台应用程序下使用GDI在内存中画图 (三)

2014-11-23 17:41:54 · 作者: · 浏览: 63
rUsed = 0;
GetDIBits(hdc, hbm, 0, bm.bmHeight, buf, (BITMAPINFO*)(&bi), DIB_RGB_COLORS); // 得到像素值,保存在buf中
// 位图文件头结构,定义参考MSDN
BITMAPFILEHEADER bf;
bf.bfType = 0x4D42; // BM
bf.bfSize = bmByteCount;
bf.bfReserved1 = 0;
bf.bfReserved2 = 0;
bf.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
// 写入文件
FILE *bmFile = fopen("demo.bmp", "w+b");
if (bmFile)
{
fwrite(&bf, sizeof(BITMAPFILEHEADER), 1, bmFile); // 写入位图文件头
fwrite(&bi, sizeof(BITMAPINFOHEADER), 1, bmFile); // 写入位图信息头
fwrite(buf, sizeof(char), bmByteCount, bmFile); // 写入像素数据
fclose(bmFile);
}
delete []buf;
}
程序运行结果如图1所示:


图1:程序运行结果