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();
}
#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
这个一闪的问题不是很好解决
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息