中易网

C语言画图__并保存我画的图片

答案:4  悬赏:20  
解决时间 2021-01-11 11:56
  • 提问者网友:最美的风景
  • 2021-01-11 04:26
C语言画图__并保存我画的图片
最佳答案
  • 二级知识专家网友:荒野風
  • 2021-01-11 04:50
加些分上去,我把代码贴上来。


#include

#include
void save_pic(char *fn,int maxx,int maxy){
typedef long LONG;
typedef unsigned char BYTE;
typedef unsigned long DWORD;
typedef unsigned short WORD;

typedef struct tagBITMAPFILEHEADER {

WORD bfType;

DWORD bfSize;

WORD bfReserved1;

WORD bfReserved2;

DWORD bfOffBits;

} BITMAPFILEHEADER;

typedef struct tagBITMAPINFOHEADER{

DWORD biSize;

LONG biWidth;

LONG biHeight;

WORD biPlanes;

WORD biBitCount;

DWORD biCompression;

DWORD biSizeImage;

LONG biXPelsPerMeter;

LONG biYPelsPerMeter;

DWORD biClrUsed;

DWORD biClrImportant;

} BITMAPINFOHEADER;

int i,j;

FILE *fp;

BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bif;
int color[16]={0,4,2,6,1,5,3,7,8,12,10,14,9,13,11,15};

unsigned char rgb[64]={0,0,0,0,0,0,128,0,0,128,0,0,0,128,128,0
,128,0,0,0,128,0,128,0,128,128,0,0,128,128,128,0
,192,192,192,0,0,0,225,0,0,255,0,0,0,255,255,0
,255,0,0,0,255,0,255,0,255,255,0,0,255,255,255,0};

union
{
unsigned char value;
struct
{
unsigned c1:4;
unsigned c2:4;

}color;
}mycolor;

bfh.bfType=0x4d42;
bfh.bfSize=153718;
bfh.bfReserved1=0;
bfh.bfReserved2=0;
bfh.bfOffBits=118;

bif.biSize=40;
bif.biWidth=640;
bif.biHeight=480;
bif.biPlanes=1;
bif.biBitCount=4;
bif.biCompression=0;
bif.biSizeImage=0;
bif.biXPelsPerMeter=0;
bif.biYPelsPerMeter=0;
bif.biClrUsed=0;
bif.biClrImportant=0;

fp=fopen(fn,"wb");

fwrite(&bfh,sizeof(bfh),1,fp);
fwrite(&bif,sizeof(bif),1,fp);
fwrite(rgb,sizeof(rgb),1,fp);

for(j=maxy-1;j>=0;j--){
for(i=0;i
mycolor.color.c2=color[getpixel(i,j)];
mycolor.color.c1=color[getpixel(i+1,j)];

putc(mycolor.value,fp);

}
}

fclose(fp);

}

main()
{
int gd=DETECT,gm;

int maxx,maxy,key;

registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,"");

maxx=getmaxx()+1;
maxy=getmaxy()+1;

setcolor(14);
circle(maxx/2,maxy/2,50);
setcolor(15);
line(maxx/2-100,maxy/2-50,maxx/2+100,maxy/2-50);

save_pic("t.bmp",maxx,maxy);
getch();

closegraph();
}
全部回答
  • 1楼网友:撞了怀
  • 2021-01-11 07:20
最后面加一个getch();
就不会闪过了
  • 2楼网友:北方的南先生
  • 2021-01-11 05:46
BMP格式是公开的,非常简单,有一个固定结构的头,存储图像的宽度、高度、色深等数据,后面的数据都是以四个一组的字节数据,存储R G B F信息,也就是一个像素点的颜色。msdn上有相关的示例。
  • 3楼网友:三千妖杀
  • 2021-01-11 05:20
这个一闪的问题不是很好解决
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息