绘制机械图c语言编程,怎样用c语言编写机械三视图啊……急……
满意答案
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语言编写机械三视图啊……急……相关推荐
- 成都c语言编程培训机构,成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗...
成都学c语言编程,成都学c语言编程去哪里,成都学c语言编程需要报培训班吗 首页 > 软件 > 成都学c语言编程 作者:镀金池 发布时间:2018-09-28 14:20 近似带有序布局 ...
- c语言编程技巧分析,C语言难点及编程技巧分析
摘要:近些年信息技术发展迅速,社会需要大量专业的计算机人才,C语言是学习计算机知识的专业理论课程,能够为以后的学习打下专业基础.但目前C语言学习受到各方面因素的影响,学习效果不是很理想,很多时候即使努 ...
- C语言编程>第六周 ① 编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中。 在主函数中调用该函数计算出这n个整数之和。
例题:编写一个录入函数:用来从键盘接收n个整型数并存放在一个整型数组中. 在主函数中调用该函数计算出这n个整数之和. 代码如下: /*代码分析:录入函数需要两个参数:一个参数是需要用来存储数字的数组, ...
- c语言编程模拟选举,C语言编程题精选
C语言编程题精选 C语言编程题精选 1. 编程实现对键盘输入的英文名句子进行加密.用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变. 2. 编程实现将任意的十 ...
- 罗定c语言,罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费...
罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费 首页 > 软件 > 罗定学c语言编程 作者:镀金池 发布时间:2018-10-04 23:40 依照c语言的法则, ...
- C语言编程>第五周 ⑤ 编写一个程序,从键盘输入X,Y,Z 3个数, 编写函数计算3个数的立方和并返回计算结果。
例题:编写一个程序,从键盘输入X,Y,Z 3个数, 编写函数计算3个数的立方和并返回计算结果. 第一种方法: 代码如下: #include <stdio.h> int abc(int,in ...
- 单片机c语言编程下载,单片机C语言编程.doc
单片机C语言编程.doc 单片机C语言编程指令格式 功能简述 字节数 周期 一.数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,Ri ...
- 数学C语言编程,数学规划 (最速下降法,c语言编程).doc
数学规划 (最速下降法,c语言编程).doc 数 学 规 划 课 程 设 计 题目:用最速下降法求解无约束非线性规划问题 姓名: 学号: 成绩: 2011年6月 用最速下降法求解无约束非线性规划问题 ...
- 分三种情况C语言编程,浅谈C语言教学的现状及几点建议.doc
浅谈C语言教学的现状及几点建议 浅谈C语言教学的现状及几点建议 摘 要 针对C语言教学中存在的问题提出建议,以期对C语言教学有一定帮助. 关键词 C语言:课程设置:创新能力 中图分类号:G642 文献 ...
- c语言编程图案大全,C语言中图案的编程
用星号打印各种图形及参考答案 [4.4]输入n值,输出如图所示矩形. [4.5]输入n值,输出如图所示平行四边形. #include void main( ) { int i,j,n; printf( ...
最新文章
- LightOJ1234 Harmonic Number 调和级数求和
- wxWidgets:库LIB清单
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 第二章 课后答案
- 黑鲨游戏手机2 Pro外观设计曝光:或将新增两条LED灯带
- 程序自动化需要一个Windows服务
- [现代程序设计]homework-03
- Oracle 11g的下载与安装
- 信号与系统 实验三 傅里叶变换、系统的频域分析
- 微信小程序分享至朋友圈
- 王者回归! Adobe Creative Cloud 打造云时代的创意体验
- MySQL数据库完全备份与恢复
- Google BigQuery带你走进大数据
- JAXB JavaBean与Xml之间转换
- Autosar MCAL-ADC详解(二)-基于Tc27x的cfg软件
- 高中数学立体几何高考真题解题技巧(名师总结)
- WCE 电源管理器(开胃菜)
- 基于matlab色彩平衡与融合用于水下图像增强
- 淘宝系统 B2C电子商务系统UML建模 范例
- 用C++评选优秀教师和优秀学生
- redhat linux密码修改