如何使用函数pieslice()
?
pieslice(X-centre,Y-centre,StrtAngle,EndAngle,Radius).
我试图使用pieslice
函数在C中绘制一个主要扇区或pieslice;我希望起始角度为135度,结束角度为235度,但同时它应该是主要扇区,而不是小扇区。
我尝试了所有四种组合
pieslice(100,100,135,-135,20)
pieslice(200,200,225,135,30)
pieslice(300,300,225,360+135,30)
pieslice(400,400,135,225,20)
pieslice(50,50,0,135,30);
pieslice(50,50,225,0,30);
但他们所有人都画出了相应的小部门而不是主要部门。有人可以告诉我该怎么做吗?
以下是输出的屏幕截图:
http://s4.postimage.org/906ozxj3u/phpu_Qu408.png
感谢您的努力和时间。
现在,我无法让pieslice以我的方式工作。但是通过以下调整,我能够解决问题并获得所需的输出。我编写了一个类似于pieslice的用户定义函数slice(int x-centre, int y-centre,int sangle, int eangle, int radius)
。
我希望它对那些陷入类似情况的人有用:
void slice(int x, int y, int sangle, int eangle, int rad)
{
int i,j,color;
if(sangle>eangle){
color=getcolor();
setcolor(getcolor()) ;
setfillstyle(SOLID_FILL,color);
circle(x,y,rad);
floodfill(x,y,color);
setcolor(getbkcolor());
setfillstyle(SOLID_FILL,getbkcolor());
pieslice(x,y,eangle,sangle,rad);
setcolor(color);
}
}
答案 0 :(得分:2)
绘制两个具有相同中心和半径的饼图,一个从0到135度,一个从225到0度。似乎该函数强制饼图片总是小于180度,所以这应该可以解决。
答案 1 :(得分:0)
这是我使用饼图切片的游戏循环。 pac man来回走动。
for (int dx = 10, dy = 0, dt = 100; c != 'q';) {
if ((x + rx + dx) > getmaxx() || (x + rx + dx) < 0) {
dx = -dx;
rx = -rx;
}
if ((y + ry + dy) > getmaxy() || (y + ry + dy) < 0) {
dy = -dy;
ry = -ry;
}
delay(dt);
cleardevice();
//gotoxy(1,1);
//cout << x+rx << " " << y+ry << " " << m;
pieslice(x, y, (sa + m), (ea - m), RADIUS);
//floodfill(x,y,getcolor());
if (m + dm < 0 || m + dm > ea)
dm = -dm;
m += dm;
x += dx;
y += dy;
if (kbhit())
c = getch();
}