首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将对象限制在窗体的边界上?

问如何将对象限制在窗体的边界上?
EN

Stack Overflow用户
提问于 2017-10-04 17:31:38
回答 1查看 499关注 0票数 1

我目前正在制作一个空间入侵者类型的游戏使用C#窗口窗体。当创建用户控制的激光炮时,我希望他们向左和右移动,发射激光。到目前为止,这是我目前的代码:

代码语言:javascript
复制
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)
    {

    }
}
}

然而,我对此有一个问题;如果图像走得太远,它就会超出表单的边界,但我希望它能够弹出,然后朝另一条方向走。

我试过这样做,但没有用,它只移动了一个像素,但我认为这是一个很好的步骤(对吗?):

代码语言:javascript
复制
if(pictureBox1.Location == new Point(300,300))
            {
                pictureBox1.Location = new Point(pictureBox1.Left - 1);
            }

例如,我如何得到整个形式的正确的X,Y坐标,这样我就可以告诉它走另外一条路,也可以让它移动?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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不在范围之外,请不要移动图片框,否则,请移动它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46570835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档