[英]Move PictureBox using Timer
我的目标是来回移动图片框。 我的问题是如何执行此操作。
我写了以下内容:
int x = enemy.Location.X;
int y = enemy.Location.Y;
enemy.Location = new Point(x+-1, y);
这会将图片框移到屏幕外的左侧。 向左移动后,我希望它向右移动,以便它来回移动-连续循环。
我是菜鸟,我尝试过:
if (x < 40)
enemy.Location = new Point(x - -100, y);
else if (x > 400)
enemy.Location = new Point(x - 5, y);
事实证明这不成功-盒子似乎在到达像素40时没有移动。
有没有一种简单的解决方案可以让您走向我,还是我为自己挖了一个早坟?
我应该指出:根据大学分配要求,我正在用C#编写。
干杯。
向左移动时,当x位置达到0时,更改方向并向右移动。
向右移动时,您需要使用屏幕的宽度减去图片框的宽度。
System.Windows.SystemParameters.PrimaryScreenWidth
编辑:
或者更好的方法是,使用表单的宽度减去图片框的宽度。 如果它没有最大化,它仍然可以工作。
设置一个在负值和正值之间切换的变量,以使其向左和向右移动。 您可以通过乘以-1来切换方向。 然后只需将变量添加到当前的X值中,如下所示:
private int direction = -1; // this can be values other than 1 to make it jump farther each move
private void timer1_Tick(object sender, EventArgs e)
{
int x = enemy.Location.X + direction;
if (x <= 0)
{
direction = -1 * direction;
x = 0;
}
else if (x >= this.ClientRectangle.Width - enemy.Width)
{
direction = -1 * direction;
x = this.ClientRectangle.Width - enemy.Width;
}
enemy.Location = new Point(x, enemy.Location.Y);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.