我目前正在制作一个空间入侵者类型的游戏使用C#窗口窗体。当创建用户控制的激光炮时,我希望他们向左和右移动,发射激光。到目前为止,这是我目前的代码:
enter code here
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Move
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_KeyDown(object sender, KeyEventArgs e)
{
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
int i;
for (i = 0; i < 500; i++)
{
if (e.KeyCode == Keys.Up)
{
pictureBox1.Location = new Point(pictureBox1.Left - 1);
Application.DoEvents();
System.Threading.Thread.Sleep(10);
}
if (e.KeyCode == Keys.Down)
{
pictureBox1.Location = new Point(pictureBox1.Left + 1);
Application.DoEvents();
System.Threading.Thread.Sleep(10);
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}然而,我对此有一个问题;如果图像走得太远,它就会超出表单的边界,但我希望它能够弹出,然后朝另一条方向走。
我试过这样做,但没有用,它只移动了一个像素,但我认为这是一个很好的步骤(对吗?):
if(pictureBox1.Location == new Point(300,300))
{
pictureBox1.Location = new Point(pictureBox1.Left - 1);
}例如,我如何得到整个形式的正确的X,Y坐标,这样我就可以告诉它走另外一条路,也可以让它移动?
发布于 2017-10-04 17:40:45
图片框留在窗体内的最小X和Y位置是0。
图片框可以到达的最大X是Form.ClientSize.Width - pictureBox.Size.Width
最大的Y图片盒可以去是Form.ClientSize.Height - pictureBox.Size.Height。
在if语句中检查所有这些内容。如果图片框的X或Y不在范围之外,请不要移动图片框,否则,请移动它。
https://stackoverflow.com/questions/46570835
复制相似问题