我的目标是来回移动一个图片盒。我的问题是如何做到这一点。
我写了以下内容:
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#写作。
干杯。
答案 0 :(得分:1)
向左移动时,当x位置达到0时,改变方向并向右移动。
向右移动时,您需要使用屏幕宽度减去图片框的宽度。
System.Windows.SystemParameters.PrimaryScreenWidth
编辑:
或者更好的是,使用表单的宽度减去图片框的宽度。如果它没有最大化,它仍然可以工作。
答案 1 :(得分:0)
设置一个在负值和正值之间切换的变量,使其左右移动。您可以通过乘以-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);
}