Я использую Visual Studio 2013 для написания приложения Windows Forms C#. Я хочу нарисовать игровой доски на Form1_Load
и нарисовать пешки при нажатии кнопки. Я написал два метода: InitDraw()
и Draw()
. Когда оба метода находятся в Form1_Load()
или, это нормально, но если InitDraw()
находится в Form1_Load()
и Draw()
находится в button1_Click()
- он рисует, только если я нажимаю Alt или перемещаю окна из экрана и возвращаюсь на экран. Я добавил Invalidate()
, но это не поможет.Как начать рисовать в одном событии и продолжить в другом?
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Bitmap drawBitmap;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
InitDraw();
}
private void button1_Click(object sender, EventArgs e)
{
Draw();
}
private void InitDraw()
{
drawBitmap = new Bitmap(500, 500);
pictureBox1.Image = drawBitmap;
}
private void Draw()
{
Graphics g = Graphics.FromImage(pictureBox1.Image);
Pen myPen = new Pen(Color.Black);
g.DrawLine(myPen, 0, 0, 100, 100);
myPen.Dispose();
g.Dispose();
Invalidate();
}
}
}
Почему вы не вызываете Draw() в Form1_Load()? – TuukkaX
как насчет этого .Refresh()? –
Я нажимаю на клик, потому что хочу начать игру в начале и две кнопки, такие как «Добавить пешку» и «Удалить пешку». Refresh() помогает. – Saku