0

ゲームの画像を C# の Panel に描画しようとしています。画像が描画されず、このメソッドが呼び出されない理由がわかりません:

private void playerPanel_Paint(オブジェクト送信者, PaintEventArgs e)

これが私のコードです:

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 FlightOfTheNavigator
{
    public partial class Form1 : Form
    {
        // Load Sprites
        public Bitmap playerShip = new Bitmap(FlightOfTheNavigator.Properties.Resources.testship);

        public Form1()
        {
            InitializeComponent();        
            SetupGame();
        }

        public void SetupGame()
        {
            // Setup Console
            txtConsole.Text = "Loading Ship Bios v3.4.12c ..." + 
                               Environment.NewLine + 
                               "Console Ready" + 
                               Environment.NewLine + 
                               "----------------------------------------------------------------------------------------" + 
                               Environment.NewLine +
                               Environment.NewLine;

            // Setup Basic Weapons
            listWeapons.Items.Add("Pulse Lazers");
            listWeapons.Items.Add("Cluster Missiles");

            // Set Shield Perecentage
            txtShields.Text = "0%";
        }

        private void trackShield_Scroll(object sender, EventArgs e)
        {
            txtShields.Text = "" + trackShield.Value + "%";
        }

        private void playerPanel_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = playerPanel.CreateGraphics();
            g.DrawImage(playerShip, 0, 0,100,100);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Invalidate the panel. This will lead to a call of 'playerPanel_Paint'
            playerPanel.Refresh();
        }
    }
}
4

1 に答える 1

1

パネルのイベントがメソッドPaintに添付されていることを確認してください。playerPanel_Paint

Desinger を開き、パネル ( playerPanel) を選択し、 を押しF4て [プロパティ] ウィンドウを表示し、[プロパティ] ウィンドウの上にある稲妻をクリックしてイベントを表示します。Paintそこでイベントをチェック。空の場合は、ドロップダウンを開いてplayerPanel_Paintメソッドを選択します。

コードで行うこともできます。これをフォームのコンストラクタの後に入れますInitializeComponent():

this.playerPanel.Paint += PaintEventHandler(playerPanel_Paint);
于 2013-03-20T18:35:18.637 に答える