在椭圆上移动图片框时出现问题

时间:2016-01-24 15:51:49

标签: c# .net c#-4.0

我想制作一个程序,模拟在太阳系中移动的行星,但某个行星正在离开轨道。

Picture 1

Picture 2

我试图在太阳周围移动行星。

planetDay是地球上一天报告的天数

行星不跟踪轨道,我认为这是问题,但我不确定,当我修改行星的位置时,我将X和Y转换为int,当我这样做时,我将这些数字舍入

private void MovePlanets()
{
        double x;
        double y;

        int k = 0;

        foreach (PictureBox pic in pictureBox1.Controls)
        {
            if (pic.Name == "sun")
            {
                continue;
            }

            x = sun.Location.X + (rectangle[k].Width / 2 * Math.Cos(planetDay[k] + alpha));
            y = sun.Location.Y + (rectangle[k].Height / 2 * Math.Sin(planetDay[k] + alpha));
            pic.Location = new Point(Convert.ToInt32(x), Convert.ToInt32(y));
            k++;

            if (k == 8)
            {
                k = 0;
            }
        }

        alpha += 0.1;
}

这里我生成了用于绘制椭圆的矩形

private void Orbit()
{      
        int x1 = 30;

        foreach (PictureBox pic in pictureBox1.Controls)
        {
            if (pic.Name == "sun")
            {
                continue;
            }

            Rectangle r = new Rectangle
               (
                   pic.Location.X + pic.Size.Width / 2,
                   (sun.Location.Y + sun.Size.Width / 2) - x1,
                   ((sun.Location.X + sun.Size.Width / 2) - (pic.Location.X + pic.Size.Width / 2)) * 2,
                   x1 * 2
               );
            rectangle.Add(r);
            x1 += 36;

        }
}

在这里我绘制省略号

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
        Pen p = new Pen(Color.White, 1f);

        foreach (Rectangle rec in rectangle)
        {
            e.Graphics.DrawEllipse(p, rec);
        }
}

有人可以帮我解决这个问题吗?

0 个答案:

没有答案