簡體   English   中英

在C#Windows窗體中為PictureBox設置邊界

[英]Set Boundaries For A PictureBox In C# Windows Form

因此,我們的任務是使用C#編寫轟炸機游戲,但除使用Windows窗體的Visual Studio外,我們不允許使用其他功能。 我們也不允許使用團結。 所以我的問題是如何設置界限? 這樣玩家就不會穿過瓷磚...請花點時間檢查圖像:

在此處輸入圖片說明

這是我的代碼:

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 Layout
{
    public partial class FormView : Form
    {
        enum Position
        {
            Left, Right, Up, Down
        }

        private int _x;
        private int _y;
        private Position _objPosition;

        public FormView()
        {
            _x = 50;
            _y = 50;
            _objPosition = Position.Down;
            InitializeComponent();
        }

        private void FormView_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(new Bitmap("Character.png"), _x, _y, 50, 50);
        }

        private void tmrMoving_Tick(object sender, EventArgs e)
        {
            Invalidate();
        }

        private void FormView_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.D)
            {
                _x += 50;
                _objPosition = Position.Right;
            }
            else if (e.KeyCode == Keys.A)
            {
                _x -= 50;
                _objPosition = Position.Left;
            }
            else if (e.KeyCode == Keys.W)
            {
                _y -= 50;
                _objPosition = Position.Up;
            }
            else if (e.KeyCode == Keys.S)
            {
                _y += 50;
                _objPosition = Position.Down;
            }
        }
    }
}

如果按照我的理解, _objPosition包含您人員的位置(x,y),則只需使用If語句對照PictureBox的大小進行檢查。 我不確定_objPosition包含什么,您也可以直接使用xy

        var _x = 0;
        var _y = 0;
        if (_x == pictureBox1.Width)
        {
            // Dont Move
        }
        else
        {
            switch (e.KeyCode)
            {
                case Keys.D:
                    _x += 50;
                    _objPosition = Position.Right;
                    break;
                case Keys.A:
                    _x -= 50;
                    _objPosition = Position.Left;
                    break;
            }
        }

        if (_y == pictureBox1.Length)
        {
            //Don't Move
        }
        else
        {
            switch (e.KeyCode)
            {
                case Keys.W:
                    _y -= 50;
                    _objPosition = Position.Up;
                    break;
                case Keys.S:
                    _y += 50;
                    _objPosition = Position.Down;
                    break;
            }
        }

經過編輯,可將您推向正確的方向。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM