满意答案

m191

2013.10.11

采纳率:56%    等级:12

已帮助:5172人

#include

#include

#include

#include

#include

#include

#include

#include

#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",

"o: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; }

}

00分享举报

绘制机械图c语言编程,怎样用c语言编写机械三视图啊……急……相关推荐

  1. 成都c语言编程培训机构,成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗...

    成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗 首页 > 软件 > 成都学c语言编程 作者:镀金池   发布时间:2018-09-28 14:20 近似带有序布局 ...

  2. c语言编程技巧分析,C语言难点及编程技巧分析

    摘要:近些年信息技术发展迅速,社会需要大量专业的计算机人才,C语言是学习计算机知识的专业理论课程,能够为以后的学习打下专业基础.但目前C语言学习受到各方面因素的影响,学习效果不是很理想,很多时候即使努 ...

  3. C语言编程>第六周 ① 编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中。 在主函数中调用该函数计算出这n个整数之和。

    例题:编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中. 在主函数中调用该函数计算出这n个整数之和. 代码如下: /*代码分析:录入函数需要两个参数:一个参数是需要用来存储数字的数组, ...

  4. c语言编程模拟选举,C语言编程题精选

    C语言编程题精选 C语言编程题精选 1. 编程实现对键盘输入的英文名句子进行加密.用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变. 2. 编程实现将任意的十 ...

  5. 罗定c语言,罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费...

    罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费 首页 > 软件 > 罗定学c语言编程 作者:镀金池   发布时间:2018-10-04 23:40 依照c语言的法则, ...

  6. C语言编程>第五周 ⑤ 编写一个程序,从键盘输入X,Y,Z 3个数, 编写函数计算3个数的立方和并返回计算结果。

    例题:编写一个程序,从键盘输入X,Y,Z 3个数, 编写函数计算3个数的立方和并返回计算结果. 第一种方法: 代码如下: #include <stdio.h> int abc(int,in ...

  7. 单片机c语言编程下载,单片机C语言编程.doc

    单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...

  8. 数学C语言编程,数学规划 (最速下降法,c语言编程).doc

    数学规划 (最速下降法,c语言编程).doc 数 学 规 划 课 程 设 计 题目:用最速下降法求解无约束非线性规划问题 姓名: 学号: 成绩: 2011年6月 用最速下降法求解无约束非线性规划问题 ...

  9. 分三种情况C语言编程,浅谈C语言教学的现状及几点建议.doc

    浅谈C语言教学的现状及几点建议 浅谈C语言教学的现状及几点建议 摘 要 针对C语言教学中存在的问题提出建议,以期对C语言教学有一定帮助. 关键词 C语言:课程设置:创新能力 中图分类号:G642 文献 ...

  10. c语言编程图案大全,C语言中图案的编程

    用星号打印各种图形及参考答案 [4.4]输入n值,输出如图所示矩形. [4.5]输入n值,输出如图所示平行四边形. #include void main( ) { int i,j,n; printf( ...

最新文章

  1. LightOJ1234 Harmonic Number 调和级数求和
  2. wxWidgets:库LIB清单
  3. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第二章 课后答案
  4. 黑鲨游戏手机2 Pro外观设计曝光:或将新增两条LED灯带
  5. 程序自动化需要一个Windows服务
  6. [现代程序设计]homework-03
  7. Oracle 11g的下载与安装
  8. 信号与系统 实验三 傅里叶变换、系统的频域分析
  9. 微信小程序分享至朋友圈
  10. 王者回归! Adobe Creative Cloud 打造云时代的创意体验
  11. MySQL数据库完全备份与恢复
  12. Google BigQuery带你走进大数据
  13. JAXB JavaBean与Xml之间转换
  14. Autosar MCAL-ADC详解(二)-基于Tc27x的cfg软件
  15. 高中数学立体几何高考真题解题技巧(名师总结)
  16. WCE 电源管理器(开胃菜)
  17. 基于matlab色彩平衡与融合用于水下图像增强
  18. 淘宝系统 B2C电子商务系统UML建模 范例
  19. 用C++评选优秀教师和优秀学生
  20. redhat linux密码修改

热门文章

  1. cropped-werewolf-2-256.png
  2. 测试驱动的嵌入式C语言开发(TDD)(第1-3章)
  3. 重头开始学“程序员的数学”
  4. Day719. 矢量运算 -Java8后最重要新特性
  5. 湖南大学夏令营 ---- 信息科学与工程学院
  6. 若依框架的菜单管理中增加详情页
  7. 2021年特种作业操作证2021年焊工证熔化焊接与热切割考试题库解析
  8. sorce insight 4.0 编辑程序不更新下载如何设置
  9. 税收筹划和税务筹划的区别是什么?
  10. EPSS 解读:与 CVSS 相比,孰美?