题目:用自己编写的直线函数完成如下内容,在此基础上可以尝试用实线和虚线自己创作
#include <graphics.h> // 引用图形库头文件
#include <conio.h>
#include <math.h>
#define CELL 80
void DDALine(int x1,int y1,int x2,int y2,int color,bool f)
{
int i,length;
float dx,dy,x=x1,y=y1;
if(abs(x2-x1)>=abs(y2-y1))//选择步长
length=abs(x2-x1);
else
length=abs(y2-y1);
dx=(float)(x2-x1)/length;
dy=(float)(y2-y1)/length;
putpixel((int)(x),(int)(y),color);
for(i=1;i<=length;i++)
{
x=x+dx;
y=y+dy;
//bool判断虚实
if(f==0&&((int)x/6)%2==0)//设置除数为6
putpixel((int)(x+0.5),(int)(y+0.5),color);
else if(f==1)
putpixel((int)(x+0.5),(int)(y+0.5),color);
}
}
int main()
{
initgraph(640, 640); // 创建绘图窗口
setbkcolor(WHITE);//白色背景
cleardevice();//刷新窗口
setorigin(320,320);
//实线
DDALine(-320,0 ,0,-320 ,RED,1);
DDALine(320,0,0,320,RED,1);
DDALine(0,-320,320,0,RED,1);
DDALine(0,320,-320,0,RED,1);
//虚线
for(int t=1;t<4;t++)
{
for(int k=1;k<3;++k)
{
int a=pow(-1,k);
int loc=t*CELL*a;
DDALine(320*a,loc,loc,320*a,BLACK,0);
DDALine(320*a*(-1),loc,-loc,320*a,BLACK,0);
}
}
//蝴蝶
for(int k=1;k<3;k++)
{
int a=pow(-1,k);
DDALine(160*a,-150,0,0,MAGENTA,1);
DDALine(160*a,80,0,0,MAGENTA,1);
DDALine(160*a,-150,160*a,80,MAGENTA,1);
DDALine(100*a,140,0,0,MAGENTA,1);
DDALine(30*a,180,0,0,MAGENTA,1);
DDALine(100*a,140,30*a,180,MAGENTA,1);
DDALine(80*a,-160,0,0,BLACK,1);
}
getch(); // 按任意键继续
closegraph(); // 关闭绘图窗口
return 0;
}