?? ellipse.c
字號:
/* WIN-TC BGI 圖形編程模板 */
#include <Conio.h>
#include <graphics.h>
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */
registerbgidriver(EGAVGA_driver);/* 注冊BGI驅動后可以不需要.BGI文件的支持運行 */
initgraph(&gd, &gm, "");
}
void setpixel(int x,int y,int color)
{
int ry=getmaxy()-y;
putpixel(x,ry,color);
}
void midpointellipse(int xc,int yc,int a,int b,int color)
{
long aa=(long)a*a,bb=(long)b*b;
long twoaa=2*aa,twobb=2*bb;
long x=0,y=b;
long d;
long dx=0;
long dy=twoaa*y;
d=bb+aa*(-b)+aa/4;
setpixel(xc+x,yc+y,color);
setpixel(xc+x,yc-y,color);
setpixel(xc-x,yc+y,color);
setpixel(xc-x,yc-y,color);
while(dx<dy)
{
x++;
dx+=twobb;
if(d<0) d+=bb+dx;
else
{dy-=twoaa;
d+=bb+dx-dy;
y--;
}
setpixel(xc+x,yc+y,color);
setpixel(xc+x,yc-y,color);
setpixel(xc-x,yc+y,color);
setpixel(xc-x,yc-y,color);
}
d=bb*(x*x+x)+bb/4+aa*(y-1)*(y-1)-aa*bb;
while(y>0)
{y--;
dy-=twoaa;
if(d>0) d+=aa-dy;
else
{x++;
dx+=twobb;
d+=aa-dy+dx;
}
setpixel(xc+x,yc+y,color);
setpixel(xc+x,yc-y,color);
setpixel(xc-x,yc+y,color);
setpixel(xc-x,yc-y,color);
}
}
int main(void)
{ int xc,yc,a=0,b=1,color,k=0;
printf("xc=");scanf("%d",&xc);
printf("\nyc=");scanf("%d",&yc);
while(a<b)
{
if(k==1) printf("\nInput error!");
k=1;
printf("\na=");scanf("%d",&a);
printf("\nb=");scanf("%d",&b);
}
k=0;
while(color<0||color>15)
{
if(k==1) printf("\nInput error!");
k=1;
printf("\ncolor=");scanf("%d",&color);
}
initgr(); /* BGI初始化 */
midpointellipse(xc,yc,a,b,color);
getch(); /* 暫停一下,看看前面繪圖代碼的運行結果 */
closegr(); /* 恢復TEXT屏幕模式 */
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -