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:程序运行结果
|