gpt4 book ai didi

c# - 使用角度移动矩形

转载 作者:太空狗 更新时间:2023-10-29 20:30:39 26 4
gpt4 key购买 nike

我需要使用角度移动一个矩形。实际上,当我的移动矩形到达我在 if 语句中的代码中给出的位置时,我想改变它的方向!

我只需要知道如何以 60、30、60、120、150、270 度移动我的矩形!

假设如果

          circle.Y>=this.Height-80

看这个: enter image description here

我真的需要用角度来改变矩形移动的方向!这样在到达某个位置我可以根据自己选择的角度改变矩形方向!这样:

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 ;

但在这两种情况下都没有发生任何事情并且方向保持不变!我只想在到达

circle.Y>=this.Height-80

最佳答案

您需要再次将矩形绘制到某个图像上才能显示。我创建了这段代码,用于在 pictureBox1 上移动和绘制矩形,使用您已经定义的 circle-rectangle:

移动矩形:

public void MoveRectangle(ref Rectangle rectangle, double angle, double distance)
{
double angleRadians = (Math.PI * (angle) / 180.0);
rectangle.X = (int)((double)rectangle.X - (Math.Cos(angleRadians) * distance));
rectangle.Y = (int)((double)rectangle.Y - (Math.Sin(angleRadians) * distance));
}

绘制矩形并将其显示在PictureBox中:

public void DrawRectangle(Rectangle rectangle)
{
Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
using (Graphics g = Graphics.FromImage(bmp))
{
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
g.FillEllipse(new SolidBrush(Color.Red), rectangle);
}
pictureBox1.Image = bmp;
}

通过单击按钮进行演示:

private void Button1_Click(object sender, EventArgs e)
{
MoveRectangle(ref circle, 90, 5);
DrawRectangle(circle);
}

关于c# - 使用角度移动矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23997966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com