📄 cad.c
字号:
}
if(key==Key_ALT_F) {flag=1;break;}
if(key==Key_ALT_C) {flag=2;break;}
if(key==Key_ALT_X) {flag=4;break;}
}while(1);
}
void cq() /*左右错切变换函数*/
{float o=0.3;
xd=xd1=xm;
yd=ay[0]-10;
yd1=ay[3]+10;
for(i=0;i<4;i++)
for(j=0;j<6;j++)
cx[i][j]=ax[j];
for(i=0;i<4;i++)
for(j=0;j<6;j++)
cy[i][j]=ay[i];
do
{key=getkey();
switch(key)
{
case Key_RIGHT: {
for(i=0;i<6;i++)
{cx[0][i]=cx[0][i]+154*o;
cx[1][i]=cx[1][i]+130*o;
}
for(i=1;i<5;i++)
{cx[2][i]=cx[2][i]+92*o;
cx[3][i]=cx[3][i];
}
xd=xd+164*o;
xd1=xd1-10*o;clearviewport();
xzh1();
break;
}
case Key_LEFT: {
for(i=0;i<6;i++)
{cx[0][i]=cx[0][i]-154*o;
cx[1][i]=cx[1][i]-130*o;
}
for(i=1;i<5;i++)
{cx[2][i]=cx[2][i]-92*o;
cx[3][i]=cx[3][i];
}
xd=xd-164*o;
xd1=xd1+10*o;
clearviewport();
xzh1();
break;
}
}
if(key==Key_ALT_F) {flag=1;break;}
if(key==Key_ALT_C) {flag=2;break;}
if(key==Key_ALT_X) {flag=4;break;}
}while(1);
}
void cq1() /*上下错切变换函数*/
{float o=0.3;
xd=xd1=xm;
yd=ay[0]-10;
yd1=ay[3]+10;
for(i=0;i<4;i++)
for(j=0;j<6;j++)
cx[i][j]=ax[j];
for(i=0;i<4;i++)
for(j=0;j<6;j++)
cy[i][j]=ay[i];
do
{key=getkey();
switch(key)
{case Key_DOWN: {
for(i=0;i<4;i++)
{
cy[i][1]=cy[i][1]+13*o;
cy[i][2]=cy[i][2]+17*o;
cy[i][3]=cy[i][3]+49*o;
cy[i][4]=cy[i][4]+53*o;
cy[i][5]=cy[i][5]+66*o;
}
yd=yd+33*o;
yd1=yd1+33*o;
clearviewport();
xzh1();
break;
}
case Key_UP: {
for(i=0;i<4;i++)
{
cy[i][1]=cy[i][1]-13*o;
cy[i][2]=cy[i][2]-17*o;
cy[i][3]=cy[i][3]-49*o;
cy[i][4]=cy[i][4]-53*o;
cy[i][5]=cy[i][5]-66*o;
}
yd=yd-33*o;
yd1=yd1-33*o;
clearviewport();
xzh1();
break;
}
}
if(key==Key_ALT_F) {flag=1;break;}
if(key==Key_ALT_C) {flag=2;break;}
if(key==Key_ALT_X) {flag=4;break;}
}while(1);
}
void dc() /*对称变换函数*/
{
line(15,240,620,240); /*画X坐标轴*/
moveto(620,240);
linerel(0,4);
moveto(620,240);
linerel(0,-4);
moveto(620,236);
line(620,236,628,240);
moveto(620,244);
line(620,244,628,240);
setfillstyle(1,14);
floodfill(621,240,14);
outtextxy(613,246,"X");
moveto(319,40); /*画Y坐标轴*/
line(319,40,319,420);
moveto(319,40);
linerel(4,0);
moveto(319,40);
linerel(-4,0);
moveto(315,40);
line(315,40,319,32);
moveto(323,40);
line(323,40,319,32);
setfillstyle(1,14);
floodfill(319,33,14);
outtextxy(305,42,"Y");
outtextxy(310,242,"0");
setviewport(319,240,639,479,0); /*以屏幕中心定义一个视窗口*/
xdc=160; /*给各个坐标附初值*/
ydc=120;
dx1[0]=xdc-16.5*2;
dx1[1]=dx1[0]+6.5*2;
dx1[2]=dx1[1]+2*2;
dx1[3]=dx1[2]+16*2;
dx1[4]=dx1[3]+2*2;
dx1[5]=dx1[4]+6.5*2;
dy1[0]=ydc-38.5*2;
dy1[1]=dy1[0]+12*2;
dy1[2]=dy1[1]+19*2;
dy1[3]=dy1[2]+46*2;
for(i=0;i<6;i++)
dx[i]=dx1[i];
for(j=0;j<4;j++)
dy[j]=dy1[j];
dc1();
do
{key=getkey();
switch(key)
{case Key_UP: {
for(i=0;i<6;i++)
dx[i]=dx1[i];
xdc=160;
for(i=0;i<4;i++)
dy[i]=-dy1[i];
dc2();
break;
}
case Key_LEFT: {
for(j=0;j<4;j++)
dy[j]=dy1[j];
for(i=0;i<6;i++)
dx[i]=dx1[i]*(-1);
xdc=-160;
dc1();
break;
}
case Key_DOWN: {for(i=0;i<6;i++)
dx[i]=dx1[i];
for(j=0;j<4;j++)
dy[j]=dy1[j];
for(i=0;i<6;i++)
dx[i]=-dx1[i];
for(j=0;j<4;j++)
dy[j]=-dy1[j];
xdc=-160;
dc2();
break;
}
case Key_RIGHT: {cleardevice();
setviewport(0,0,639,479,1);
hk();
dc();
}
}
if(key==Key_ALT_F) {flag=1;break;}
if(key==Key_ALT_C) {flag=2;break;}
if(key==Key_ALT_X) {flag=4;break;}
}while(1);
}
void hk() /*画菜单框*/
{rectangle(0,0,639,479);
line(0,19,639,19);
line(0,458,639,458);
setfillstyle(SOLID_FILL,GREEN);
bar(1,1,638,18);
setfillstyle(SOLID_FILL,GREEN);
bar(1,459,638,478);
hz(10,1,15,1,4,"文件");
hz(70,1,15,1,4,"变换");
hz(130,1,15,1,4,"帮助");
hz(5,460,15,1,4,"文件:");
outtextxy(53,466,"ALT_F");
hz(109,460,15,1,4,"变换:");
outtextxy(158,466,"ALT_C");
hz(214,460,15,1,4,"退出:");
outtextxy(262,466,"ALT_X");
hz(515,460,15,1,4,"指导教师:刘小勇");
hz(337,1,15,1,4,"新疆农业大学机械交通学院机制042班李静");
setviewport(1,20,638,457,1);
}
void wjcd() /*文件菜单*/
{gths1=0;bzh1=0;
wj=malloc(imagesize(4,0,105,44));
getimage(4,0,105,44,wj);
setfillstyle(SOLID_FILL,15);
bar(7,2,102,20);
wjgt=malloc(imagesize(7,2,102,20));
getimage(7,2,102,20,wjgt);
setfillstyle(SOLID_FILL,GREEN);
bar(4,0,105,44);
rectangle(6,0,103,42);
hz(10,3,15,1,4,"开始");
outtextxy(60,9,"ALT_S");
hz(10,23,15,1,4,"退出");
outtextxy(60,29,"ALT_X");
putimage(7,2,wjgt,XOR_PUT);
do
{key=getkey();
switch(key)
{case Key_DOWN:
{putimage(7,2+gths1*20,wjgt,XOR_PUT);
if(gths1==1)
gths1=0;
else
gths1++;
putimage(7,2+gths1*20,wjgt,XOR_PUT);
break;
}
case Key_UP:
{ putimage(7,2+gths1*20,wjgt,XOR_PUT);
if(gths1==0)
gths1=1;
else
gths1--;
putimage(7,2+gths1*20,wjgt,XOR_PUT);
break;
}
}
if(key==Key_ENTER) {bzh1=1;break;}
if(key==Key_ALT_F) {flag=1;break;}
if(key==Key_ALT_C) {flag=2;break;}
if(key==Key_ALT_X) {flag=4;break;}
} while(key!=Key_ESC);
putimage(4,0,wj,0);
}
void bhcd() /*变换菜单*/
{gths=0;bzh=0;
bh=malloc(imagesize(64,0,135,124));
getimage(64,0,135,124,bh);
setfillstyle(SOLID_FILL,15);
bar(70,2,135,20);
bhgt=malloc(imagesize(70,2,135,20));
getimage(70,2,135,20,bhgt);
setfillstyle(SOLID_FILL,GREEN);
bar(64,0,135,124);
rectangle(66,0,133,122);
hz(70,3,15,1,4,"平移变换");
hz(70,23,15,1,4,"比例变换");
hz(70,43,15,1,4,"旋转变换");
hz(70,63,15,1,4,"左右切错");
hz(70,83,15,1,4,"上下切错");
hz(70,103,15,1,4,"对称变换");
putimage(67,2,bhgt,XOR_PUT);
do
{key=getkey();
switch(key)
{case Key_DOWN:
{putimage(67,2+gths*20,bhgt,XOR_PUT);
if(gths==5)
gths=0;
else
gths++;
putimage(67,2+gths*20,bhgt,XOR_PUT);
break;
}
case Key_UP:
{ putimage(67,2+gths*20,bhgt,XOR_PUT);
if(gths==0)
gths=5;
else
gths--;
putimage(67,2+gths*20,bhgt,XOR_PUT);
break;
}
}
if(key==Key_ENTER) {bzh=1;break;}
if(key==Key_ALT_F) {flag=1;break;}
if(key==Key_ALT_C) {flag=2;break;}
if(key==Key_ALT_X) {flag=4;break;}
} while(key!=Key_ESC);
putimage(64,0,bh,0);
}
void cddy() /*菜单之间相互调用*/
{
if(flag==1) wjcd();
if(flag==2) bhcd();
if(flag==4) exit1();
}
main() /*主函数*/
{int gd,gm;
char ch1; /*接受键盘的输入*/
gm=DETECT; /*打开图形驱动函数*/
initgraph(&gm,&gd,"");
if ((fp=fopen("hzk16","rb"))==NULL) /*打开汉字库文件*/
{printf("Can't open haz16,Please add it");
getch();
closegraph();
exit(0);
}
setbkcolor(1); /*设置背景色为1*/
textcolor(1); /*设置文本颜色为1*/
clrscr();
gy();
close(fp); /*关闭汉字库文件*/
setbkcolor(1);
setcolor(14);
clearviewport();
fp=fopen("hzk16","rb"); /*打开汉字库文件*/
hk();
close(fp); /*关闭汉字库文件*/
jisuan();
ysh();
do
{ch1=getkey();
switch(ch1)
{ case Key_ALT_F: { fp=fopen("hzk16","rb");
wjcd();
cddy();
close(fp);
break;
}
case Key_ALT_C: { fp=fopen("hzk16","rb");
bhcd();
cddy();
close(fp);
break;
}
case Key_ALT_X: {exit1();
break;
}
}
if(gths1==1&&bzh1==1) exit1();
if(gths==0&&bzh==1) {clearviewport();
ysh();
py();
cddy();
}
if(gths==1&&bzh==1) {clearviewport();
ysh();
bl();
cddy();
}
if(gths==2&&bzh==1) {clearviewport();
ysh();
xzh();
cddy();
}
if(gths==3&&bzh==1) {clearviewport();
ysh();
cq();
cddy();
}
if(gths==4&&bzh==1) {clearviewport();
ysh();
cq1();
cddy();
}
if(gths==5&&bzh==1) {clearviewport();
dc();
setviewport(1,20,638,457,1);
cddy();
}
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -