问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁有C语言的画图应用程序

发布网友 发布时间:2022-04-29 23:38

我来回答

1个回答

热心网友 时间:2022-06-26 03:56

#include<stdio.h>
#include<graphics.h>
#include<math.h>
#include<dos.h>
#include<bios.h>
#include<ctype.h>
#include<process.h>
#include<conio.h>
#define COLOR WHITE
#define F1 59
#define F2 60
#define UP 72
#define DOWN 80
#define LEFT 75
#define RIGHT 77
#define HOME 71
#define END 79
#define PAGEUP 73
#define PAGEDOWN 81
int inc=1;
typedef union /*返回键盘输入值*/
{char c[2];
int i;
}KEY;
KEY key;
typedef struct /*定义点*/
{int x;
int y;
}DOT;
DOT dis,firstdot,secdot,dot1;
int point();
int do_that();
void mv_cp(int startx,int starty,int endx,int endy,int x,int y,int flag);/*移动函数*/
void fill(int startx,int starty,int endx,int endy);/*填充*/
void colour();/*颜色*/
void menu(void);/*主菜单*/
void save(void);/*保存*/
void load(void);/*打开文件*/
void xhairs(int a,int b);/*显示光标*/
void arr_key(char c);

/*--------------------------------主函数---------------------------------------*/
void main()
{
int k,j,m,r,x1,y1,xn,yn;
int driver,mode;
dis.x=200;
dis.y=200;
driver=DETECT;
mode=VGAHI;
registerbgidriver(EGAVGA_driver);
registerbgifont(TRIPLEX_FONT);
initgraph(&driver,&mode,"f:\\tc2.01\\BGI");
setbkcolor(BLUE);
cleardevice();
setcolor(YELLOW);
xhairs(dis.x,dis.y);
while(key.c[0]!='q')
{
menu();/*显示菜单*/
key.i=bioskey(0);
xhairs(dis.x,dis.y);
if(!key.c[0])
arr_key(key.c[1]);
else
switch(tolower(key.c[0]))
{
case 'f':
xhairs(dis.x,dis.y);colour();break;
case 'd':x1=y1=0;xhairs(dis.x,dis.y);setcolor(LIGHTRED);
outtextxy(10,22+(13)*30,"b:begine point");
outtextxy(10,22+(14)*30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(dis.x,dis.y);
outtextxy(10,22+(13)*30,"e:end point");
outtextxy(10,22+(14)*30,"g:give up");
y1=point();
fill(6,410,149,460);
setcolor(COLOR);
if(x1&&y1)
{outtextxy(10,22+(13)*30,"move the +");
outtextxy(10,22+(14)*30,"y:do n:no");
}
x1=0;
xhairs(dis.x,dis.y);
x1=do_that();
if(x1)
{xn=dis.x;yn=dis.y;
mv_cp(firstdot.x,firstdot.y,secdot.x,secdot.y,xn,yn,0);
}
fill(6,410,149,460);break;
case 'l':x1=y1=0;/*画直线*/
xhairs(dis.x,dis.y);
setcolor(LIGHTRED);
outtextxy(10,22+(13)*30,"b:begin point");
outtextxy(10,22+(14)*30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(dis.x,dis.y);
outtextxy(10,22+(13)*30,"e:end point");
outtextxy(10,22+(14)*30,"g:five up");
y1=point();
setcolor(COLOR);
if(x1&&y1)
line(firstdot.x,firstdot.y,secdot.x,secdot.y);
fill(6,410,155,460);
break;
case 'o':/*画圆形*/
x1=y1=0;
xhairs(dis.x,dis.y);
setcolor(LIGHTRED);
outtextxy(10,22+(13)*30,"b:radius");
outtextxy(10,22+(14)*30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(dis.x,dis.y);
outtextxy(10,22+(13)*30,"e:radius");
outtextxy(10,22+(14)*30,"g:give up");
y1=point();
if(x1&&y1) setcolor(COLOR);
r=sqrt(fabs((secdot.x-firstdot.x)*(secdot.x-firstdot.x)+(secdot.y-firstdot.y)*(secdot.y-firstdot.y)));
if(x1&&y1) circle(firstdot.x,firstdot.y,r);
fill(6,410,149,460);break;
case 'h':/*画矩形*/
x1=y1=0;
xhairs(dis.x,dis.y);
setcolor(LIGHTRED);
outtextxy(10,22+(13)*30,"b:left top");
outtextxy(10,22+(14)*30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(dis.x,dis.y);
outtextxy(10,22+(13)*30,"e:right bottom");
outtextxy(10,22+(14)*30,"g:give up");
y1=point();
if(x1&&y1)
{
setcolor(COLOR);
rectangle(firstdot.x,firstdot.y,secdot.x,secdot.y);
}
fill(6,410,155,460);break;
case 's':cleardevice();break;/*清屏*/
case 'w':save();break;
case 'r':load();break;
case 'm':x1=y1=0;/*图形移动*/
xhairs(dis.x,dis.y);
setcolor(LIGHTRED);
outtextxy(10,22+(13)*30,"b:begin point");
outtextxy(10,22+(14)*30,"g:give up");
x1=point();
fill(6,410,149,430);
xhairs(dis.x,dis.y);
outtextxy(10,22+(13)*30,"e:end point");
outtextxy(10,22+(14)*30,"g:give up");
y1=point();
fill(6,410,149,460);
setcolor(COLOR);
if(x1&&y1)
{
outtextxy(10,22+(13)*30,"move the +");
outtextxy(10,22+(14)*30,"y:do n:no");
}
x1=0;
xhairs(dis.x,dis.y);
x1=do_that();
if(x1)
{
xn=dis.x;yn=dis.y;
mv_cp(firstdot.x,firstdot.y,secdot.x,secdot.y,xn,yn,1);

}
fill(6,410,149,460);break;
}
xhairs(dis.x,dis.y);

}
closegraph();
}

/*--------------------------------显示光标函数--------------------------------*/
void xhairs(int a,int b)
{
int i;
for(i=a-3;i<=a+3;i++)
putpixel(i,b,15^getpixel(i,b));
for(i=b-3;i<=b+3;i++)
putpixel(a,i,15^getpixel(a,i));
}

/*------------------------------菜单函数------------------------------*/
void menu(void)
{
#define STARTX 10
#define STARTY 22
#define DISTANCE 30
int i;
char *menu_name[]={"F1:setp=1",
"F2:step=5",
"l:draw line",
"draw cirle",
"h:graw box",
"s:clear screen",
"m:move",
"d:copy",
"f:fill color",
"w:save",
"r:load",
"q:quit"};
setcolor(WHITE);
rectangle(5,5,150,470);
rectangle(5,403,150,470);
rectangle(155,5,635,470);
setcolor(LIGHTBLUE);
settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);
outtextxy(36,STARTY,"menu");
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
for(i=0;i<12;i++)
outtextxy(STARTX,STARTY+(i+1)*DISTANCE,menu_name[i]);
}

/*---------------------------------保存函数---------------------------------*/
void save(void)
{int i,j;
FILE *fp;
if((fp=fopen("graph.dat","w+"))==NULL)
{printf("cannot open this file!");
exit(0);
}
fill(260,473,400,480);
for(i=5;i<470;i++)
for(j=155;j<=635;j++)
fputc(getpixel(j,i),fp);
fclose(fp);
outtextxy(260,471,"save over!");
}

/*-----------------------------------------打开函数------------------------*/
void load(void)
{
int i,j;
FILE *fp;
if((fp=fopen("graph.dat","r+"))==NULL)
{
outtextxy(260,471,"cannot open this file!");
getch();
exit(0);
}
fill(260,471,400,480);
outtextxy(280,471,"loading......");
for(i=5;i<=470;i++)
for(j=155;j<=635;j++)
putpixel(j,i,fgetc(fp));
fill(260,471,400,480);
fclose(fp);
outtextxy(280,471,"loading over");
}

/*-----------------------------------------移动复制函数---------------------------*/
void mv_cp(int startx,int starty,int endx,int endy,int x,int y,int flag)
{
int i,j;
unsigned char c;
if(startx>endx)
{i=startx;startx=endx;endx=i;}
if(starty>endy)
{i=starty;
starty=endy;endy=i;}
for(;startx<=endx;startx++,x++)
for(i=starty,j=y;i<=endy;i++,j++)
{c=getpixel(startx,i);
if(flag) putpixel(startx,i,BLUE);
putpixel(x,j,c);
}
}

/*----------------------------返回点坐标函数----------------------------------*/
int point()
{int valid_p=0,g=1;
key.c[0]='';
while(key.c[0]!='p')
{key.i=bioskey(0);
xhairs(dis.x,dis.y);
if(!key.c[0])
arr_key(key.c[1]);
else
switch(tolower(key.c[0]))
{case 'b':putpixel(dis.x,dis.y,COLOR);
firstdot.x=dis.x;
firstdot.y=dis.y;
key.c[0]='p';
valid_p=1;
break;
case 'e':
putpixel(dis.x,dis.y,COLOR);
secdot.x=dis.x;
secdot.y=dis.y;
key.c[0]='p';
valid_p=2;break;
case 'g':
firstdot.x=secdot.x;
firstdot.y=secdot.y;
key.c[0]='p';
g=0;break;
}
xhairs(dis.x,dis.y);
if(valid_p==1||valid_p==2||g==0)
break;
}
xhairs(dis.x,dis.y);
return valid_p;

}

/*------------------------------确认操作------------------------*/
int do_that()
{
int valid_p=0,g=1;
key.c[0]='';
while(key.c[0]!='p')
{key.i=bioskey(0);
xhairs(dis.x,dis.y);
if(!key.c[0])
arr_key(key.c[1]);
else
switch(tolower(key.c[0]))
{case 'y':
key.c[0]='p';
putpixel(dis.x,dis.y,COLOR);
valid_p=1;break;
case 'n':
key.c[0]='p';
firstdot.x=secdot.x;
firstdot.y=secdot.y;
g=0;break;}
xhairs(dis.x,dis.y);
if(valid_p==1||g==0)
break;
}
xhairs(dis.x,dis.y);
return valid_p;
}

/*-----------------------------填充-------------------------------*/
void fill(int startx,int starty,int endx,int endy)
{int i,j;
for(i=startx;i<=endx;i++)
for(j=starty;j<=endy;j++)
{putpixel(i,j,BLUE);
}
}

/*-----------------------------------颜色定义--------------------------------*/
void colour()
{
key.c[0]='';
setcolor(RED);
outtextxy(10,412,"R");
setcolor(GREEN);
outtextxy(40,412,"G");
setcolor(CYAN);
outtextxy(70,412,"C");
setcolor(LIGHTBLUE);
outtextxy(10,432,"L");
setcolor(MAGENTA);
outtextxy(40,432,"M");
setcolor(YELLOW);
outtextxy(70,432,"Y");
setcolor(WHITE);
outtextxy(10,452,"W");
setcolor(BROWN);
outtextxy(40,452,"N");
setcolor(LIGHTRED);
outtextxy(70,452,"D");
while(key.c[0]!='p')
{
key.i=bioskey(0);
xhairs(dis.x,dis.y);
if(!key.c[0])
arr_key(key.c[0]);
else
{switch(tolower(key.c[0]))
{case 'y' : setfillstyle(SOLID_FILL,YELLOW); break;
case 'r' : setfillstyle(SOLID_FILL,RED);break;
case 'g' : setfillstyle(SOLID_FILL,GREEN);break;
case 'c' : setfillstyle(SOLID_FILL,CYAN);break;
case 'l' : setfillstyle(SOLID_FILL,LIGHTBLUE);break;
case 'm' : setfillstyle(SOLID_FILL,MAGENTA);break;
case 'w' : setfillstyle(SOLID_FILL,WHITE);break;
case 'n' : setfillstyle(SOLID_FILL,BROWN);break;
case 'd' : setfillstyle(SOLID_FILL,LIGHTRED);break;
}
key.c[0]='p';}

/*-------------------------光标---------------------*/
xhairs(dis.x,dis.y);
}
xhairs(dis.x,dis.y);
floodfill(dis.x,dis.y,WHITE);
fill(6,410,149,460);
}

/*-----------------------------光标控制----------------------------*/
void arr_key(char c)
{switch(c)
{case LEFT : dis.x-=inc;break;
case RIGHT : dis.x+=inc;break;
case UP : dis.y-=inc;break;
case DOWN : dis.y+=inc;break;
case F1 : inc=1;break;
case F2 : inc=5;break;
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 婴幼儿喂养与营养指南是什么? C能像matlab一样画图吗?? 如何科学的喂养孩子? 想要进行母乳喂养,有什么必知事项呢? 婴幼儿喂养有哪些原则? C什么绘图软件 4个月宝宝吃多少毫升奶粉算正常 婴幼儿怎样平衡膳食 关于5个月孩子的辅食,吃什么食物好? 以C开头的作图软件,除CAD 2020年高级育婴师易考考点:婴儿日常喂养指导 乘法口诀斜着看发现什么 网易云音乐领取礼品卡会自动关注吗 初次为宝宝喂养辅食的时候,要注意什么问题? 乘法口诀表横,竖,着看各有什么特点 乘法口诀竖着斜着横着怎么? 宝宝四个月母乳喂养时间表 6到12月龄婴儿喂养指南包括 12月龄到18月龄宝宝喂养指南 没有装箱单可以退货成功吗吗 如何用c中的画图工具? 怎么注册登录啊 请问有什么可以c语言图形化编程的软件 教c语言的郝斌老师是用什么软件在桌面上画图与写字的。知道的说一下,谢谢! 如何用c语言编写图形操作的软件呢?? .Windows中的“画图”软件属于( )。A.系统软件B.应用软件C.工具软件D.自由软件 怎么样登陆注册 蝗虫与蚂蚱一样吗? 电子万能试验机怎么做环刚度 HDPE双壁波纹管环刚度测定中直径变化0.03d,指的是内径还是外径? HDPE双壁波纹管检测项目有哪些? 检测环刚度是不是要进烘箱 请问用万能试验机测环刚度,需要做那些准备,比如内径长度的测量和实验数据应该做怎样的修改 具有初级以上工程技术(或经济)职称是指什么 双壁波纹管检测项目有哪些? 华为消费者服务热线950800 工程初级职称的申报条件是什么? 环刚度如何书写 HDPE双壁波纹管要检测哪几个项目,以及取多少米检测 JT&#47;T 529-2004预应力混凝土桥梁用塑料波纹管中,扁平管如何检测环刚度