【发布时间】:2014-07-22 18:33:54
【问题描述】:
我需要使用角度移动一个矩形。实际上,当移动矩形到达我在 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
【问题讨论】:
-
即使是作业,我们仍然会提供帮助。对我们而言,重要的是您在代码中付出的努力。
-
答案将保持不变,亲爱的,请参阅 dx=dy=2;虽然 dx/dy=dy/dx=1;
-
@user3411946 - 不要添加额外的代码,这些代码一无所获,只会让我们感到困惑。
* dy/dy显然没有任何目的。请更改代码以反映您实际想要实现的目标。或者用文字解释一下,我们可以告诉你应该怎么计算。 -
是的,因为我的矩形改变了方向
标签: c# graphics angle drawrectangle