gpt4 book ai didi

c# - c#图片移动问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:51 25 4
gpt4 key购买 nike

我已经编写了一个应用程序来使用 PictureBox 在表单上移动图像。但是我的代码只能水平移动它……我使用了一个 Timer。

我需要将图像从初始点(例如 X0,Y0)水平移动到精确位置(例如 (Xc,Y0)),然后垂直向上或向下移动它以到达 (Xc,Ym),然后返回它水平到达 (Xf,Ym)。

我已经写了水平移动图像到达(Xc,Y0)的部分,但我不知道如何写其他的......

这是我从 (X0,Y0) 移动到 (Xc,Y0) 的代码:

public partial class Form1 : Form
{
void timer_Tick(object sender, EventArgs e)
{
int x = pictureBox1.Location.X;
int y = pictureBox1.Location.Y;

pictureBox1.Location = new Point(x + 2, y);

if (x > 500)
timer1.Stop();
}

public Form1()
{
InitializeComponent();

pictureBox1.ImageLocation = "1.png";
pictureBox1.Size = new Size(36, 35);

timer1.Interval = 15;

timer1.Start();
timer1.Tick += new EventHandler(timer_Tick);

}
}

此外,我做了一些尝试,但没有得到任何结果......

这是我的尝试(尝试更改方法 timer_Tick ):

    void timer_Tick2(object sender, EventArgs e)
{
int x = pictureBox1.Location.X;
int y = pictureBox1.Location.Y;

if (x <= 500)
pictureBox1.Location = new Point(x + 2, y);

if (x > 500)
{
if (y <= 250)
pictureBox1.Location = new Point(x, y + 1);

if (y == 250)
{
pictureBox1.Location = new Point(x - 2, y);
if (x < 50)
timer1.Stop();
}

}
}

请大家帮我完成这个...

最佳答案

关键是使用时间而不是 x 作为你的关键:

int t = 0;

void timer_Tick1(object sender, EventArgs e)
{
t++;

int x = pictureBox1.Location.X;
int y = pictureBox1.Location.Y;

if (t <= 250)//go right 500 in 250 ticks
pictureBox1.Location = new Point(x + 2, y);
else if (t <= 500)//...then go down 250 in 250 ticks
pictureBox1.Location = new Point(x, y + 1);
else if (t <= 750)//...then go left 500 in 250 ticks
pictureBox1.Location = new Point(x - 2, y);
else
timer1.Stop();
}

因为当您尝试在返回 x0 的过程中递减 x 时,您将退回到第一个 if block 。

关于c# - c#图片移动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4864017/

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