第2个回答 推荐于2016-08-29
源代码:
#include <windows.h>
#include <stdio.h>
#define BMP_SIZE_OFFSET 18
#define BMP_DATA_OFFSET 54
int main(void)
{
//定义操作位图的变量
int w; //图像宽度
int h; //图像高度
char *buf, *p; //图像数据
int r,g,b,pix; //像素颜色
int x,y,x0,y0; //平面坐标
FILE *fp; //文件指针
int i,j;
//定义窗口和绘图设备的变量
HWND wnd; //窗口句柄
HDC dc; //绘图设备环境句柄
if((fp=fopen("b_0.bmp","rb"))==NULL){
printf("文件未找到\n");
return-1;
}
fseek(fp,18L,SEEK_SET);
fread(&w,4,1,fp); //取图像宽度
fread(&h,4,1,fp); //取图像高度
buf=(char *)malloc(w*h*3);
fseek(fp,54L,SEEK_SET); //定位到数据处
fread(buf,1,w*h*3,fp); //读取像素数据
fclose(fp);
wnd=GetForegroundWindow(); //获取窗口句柄
dc=GetDC(wnd); //获取绘图设备
x0=40; y0=40;
p=buf;
for(j=0;j<h;j++){
for(i=0;i<w;i++){
b=*p++; g=*p++; r=*p++;
pix=RGB(r,g,b); //合成像素颜色值
//pix=(r&0xFF)<<16|(g&0xFF)<<8|b&0xFF; //与上一句邓加
SetPixel(dc,x0+i, y0+h-j, pix); //画像素点
}
}
free(buf);
getchar();
return 0;
}
经过测试此程序可以在vc6下正常运行;本回答被提问者和网友采纳