我有2個圖片框,一個英雄和一個敵人。英雄似乎加載罰款在我指定的PictureBox(0,0)的屬性中的位置。然而,敵人的圖片框我希望它被設置爲位置(90,90),我將它設置爲該位置,但是當我運行窗體窗體時 - 出於某種原因 - 它顯示圖片窗體位於( 60,58)。X和Y的圖片框位置與當前輸入的屬性不同
英雄PictureBox是綠色和敵人是橙色。
我想製作一個簡單的遊戲,並且想要將英雄的尺寸移動到他的瓦片上,這樣如果您將英雄移動到敵人的位置,他們應該平放在彼此之上。我的表單設置爲全尺寸(300,300),並且兩個圖片框的大小均爲(30,30)。因此,如果它們設置在(0,0)的起始位置,它們應該能夠「向左」和「向右」移動10個動作。我不確定是否我的移動方法讓我感到困惑,但我也沒有想到爲什麼當x和y的位置不同時,我試圖將它發佈到控制檯來調試這種情況 - 而不是90, 90,我把它放在形式和屬性上。理想情況下,我應該可以將3向左移動3向下移動並且位於敵人的頂部,但它不完全正確。
有什麼理由爲什麼這些不一樣?我會附上照片和我的源代碼。
出發位置
英雄動 - 他們不是直接在彼此的頂部,但應
敵人屬性 - 顯示大小和位置
英雄屬性 - 顯示大小和位置
CODE
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 Mirage
{
public partial class Form1 : Form
{
Random rand = new Random();
public Form1()
{
InitializeComponent();
Console.WriteLine("HERO STARTING LOCATION --- X = : {0} ---- Y = : {1}", pctrBxHero.Location.X, pctrBxHero.Location.Y);
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
using (Font myFont = new Font("Lucida", 10))
{
e.Graphics.DrawString("@", myFont, Brushes.Green, new Point(0, 0));
}
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
int x = pctrBxHero.Location.X;
int y = pctrBxHero.Location.Y;
if (e.KeyCode == Keys.Right) x += 30;
else if (e.KeyCode == Keys.Left) x -= 30;
else if (e.KeyCode == Keys.Up) y -= 30;
else if (e.KeyCode == Keys.Down) y += 30;
pctrBxHero.Location = new Point(x, y);
Console.WriteLine("HERO --- X = : {0} ---- Y = : {1}", x, y);
Console.WriteLine("ENEMY --- X = : {0} ---- Y = : {1}", pctrBxEnemy.Location.X, pctrBxEnemy.Location.Y);
}
private void pictureBox2_Paint_1(object sender, PaintEventArgs e)
{
using (Font myFont = new Font("Lucida", 10))
{
e.Graphics.DrawString("X", myFont, Brushes.Orange, new Point(0, 0));
}
}
}
}
謝謝。我投了票,因爲我沒有意識到已經改變了。但它並沒有解決我的問題,但我很感激幫助! – KangarooRIOT
它只會影響圖像,而不是pbox。 – TaW
更新了答案......強制定位敵方圖片盒。我現在也很困惑,哈哈。 – hsoesanto