Проблемы с отображением изображения на моей панели

Я пытаюсь нарисовать изображения для игры на панели в C#. Я не получаю изображения, нарисованные, и я не могу понять, почему этот метод никогда не вызывается:

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();
        }
    }
}

1 ответ

Решение

Убедитесь, что Paint событие панели прикреплено к playerPanel_Paint метод.

Откройте Desinger, выберите панель (playerPanel), нажмите F4, чтобы открыть окно "Свойства", затем щелкните молнию над окном "Свойства", чтобы отобразить события. Проверить Paint событие там. Если он пуст, откройте раскрывающийся список и выберите playerPanel_Paint метод.

Вы также можете сделать это в коде. Поместите это в конструктор формы после InitializeComponent():

this.playerPanel.Paint += PaintEventHandler(playerPanel_Paint);
Другие вопросы по тегам