Проблемы с отображением изображения на моей панели
Я пытаюсь нарисовать изображения для игры на панели в 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);