我需要使用角度移动一个矩形。实际上,当移动矩形到达我在 if 语句中的代码中给出的位置时,我想改变它的方向!
我只需要找出如何将矩形移动到 60、30、60、120、150、270 度的方法!
假设如果
circle.Y>=this.Height-80
看到这个:
我真的需要使用角度来改变矩形移动的方向!这样在某个位置到达我可以根据自己选择的角度改变矩形方向!这样:
if(circle.Y>=this.Height-80)
move in the direction of 90 degrees
if(circle.X>=this.Width-80)
move in the direction of 60 degree
正如你在屏幕截图中看到的!
我一直在尝试的是:
public partial class Form1 : Form
{
Rectangle circle;
double dx = 2;
double dy = 2;
public Form1()
{
InitializeComponent();
circle = new Rectangle(10, 10, 40, 40);
}
private void Form1_Load(object sender, EventArgs e)
{
this.Refresh();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.FillEllipse(new SolidBrush(Color.Red), circle);
}
private void timer_Tick(object sender, EventArgs e)
{
circle.X += (int)dx;
circle.Y += (int)dy;
if (circle.Y>=this.Height-80)
{
dy = -Math.Acos(0) * dy/dy; //here i want to change the direction of circle at 90 degrees so that it should go up vertically straight with same speed
}
this.Refresh();
}
}
问题是我一直在尝试将条件更改为:
dy = -Math.Asin(1) * dy;
dx = Math.Acos(0) * dx ;
但在这两种情况下都没有发生任何事情,方向保持不变!我只想在到达时将圆向上倒转 90 度
circle.Y>=this.Height-80