数学几何学的超烂,以至于解决不了问题,请各位高手给个建议我用椭圆的公式排列了内外两圈label,上代码//这里介绍下参数
//startX和startY是圆心坐标
//a,b是外圈椭圆的长短半径
//ja,jb是内圈椭圆的长短半径
public void calculateEllipseElementPoint(int startX, int startY, int a, int b, int iNum, int ja, int jb)
{
double ix, iy;
//外圈(以0开头,label的Text是皆为双数)
for (int i = 0; i < iNum; i++)
{
Label l = new Label();
ix = startX + a * Math.Sin(2 * Math.PI / iNum * i);
iy = startY + b * Math.Cos(2 * Math.PI / iNum * i);
l.Top = (int)iy;
l.Left = (int)ix;
l.Text = (i * 2).ToString();
this.Controls.Add(l);
}
//内圈(以1开头,label的Text皆为单数,数目与外圈相同)
for (int j = 0; j < iNum * 2; j++)
{
Label l = new Label();
ix = startX + ja * Math.Sin(2 * Math.PI / (iNum * 2) * j);
iy = startY + jb * Math.Cos(2 * Math.PI / (iNum * 2) * j);
l.Top = (int)iy;
l.Left = (int)ix;
if (j % 2 != 0)
{
l.Text = j.ToString();
}
}
}大家可以试一下效果,是从下方开始,依次向右排成椭圆,
我现在想让外圈(0,也就是开头)和内圈(1,也是开头)从屏幕右方开始,依次向左排列为椭圆
不知道有没有描述清楚,请各位大哥大姐出出主意,感激不尽
//startX和startY是圆心坐标
//a,b是外圈椭圆的长短半径
//ja,jb是内圈椭圆的长短半径
public void calculateEllipseElementPoint(int startX, int startY, int a, int b, int iNum, int ja, int jb)
{
double ix, iy;
//外圈(以0开头,label的Text是皆为双数)
for (int i = 0; i < iNum; i++)
{
Label l = new Label();
ix = startX + a * Math.Sin(2 * Math.PI / iNum * i);
iy = startY + b * Math.Cos(2 * Math.PI / iNum * i);
l.Top = (int)iy;
l.Left = (int)ix;
l.Text = (i * 2).ToString();
this.Controls.Add(l);
}
//内圈(以1开头,label的Text皆为单数,数目与外圈相同)
for (int j = 0; j < iNum * 2; j++)
{
Label l = new Label();
ix = startX + ja * Math.Sin(2 * Math.PI / (iNum * 2) * j);
iy = startY + jb * Math.Cos(2 * Math.PI / (iNum * 2) * j);
l.Top = (int)iy;
l.Left = (int)ix;
if (j % 2 != 0)
{
l.Text = j.ToString();
}
}
}大家可以试一下效果,是从下方开始,依次向右排成椭圆,
我现在想让外圈(0,也就是开头)和内圈(1,也是开头)从屏幕右方开始,依次向左排列为椭圆
不知道有没有描述清楚,请各位大哥大姐出出主意,感激不尽
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货