Рисование на форме С# - C#
Формулировка задачи:
Доброго времени суток.
Я рисую на форме поле для игры следующим образом:
Если не вызовать в методе OnPaint метод Invalidate() то после выхода из этого метода форма становиться пустой. А в этом случае Invalidate() заново запускает OnPaint, и получается что метод зацикливается но все отображается. Подскажите пожалуйста как это исправить и перерисовку вызывать только в нужных местах?
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
showPole(g);
Invalidate();
}
private void showPole(Graphics g)
{
for (int row = 0; row <= state.GetSizeY(); row++)
for (int col = 0; col <= state.GetSizeX(); col++)
this.kletka(g, row, col);
}
private void kletka(Graphics g, int row, int col)
{
int x = (col - 1) * W + 1,
y = (row - 1) * H + 1;
Pen pen = new Pen(Color.Red);
g.DrawRectangle(pen, x - 1, y - 1, x + W, y + H);
}Решение задачи: «Рисование на форме С#»
textual
Листинг программы
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
showPole(g);
Invalidate();
}
private void showPole(Graphics g)
{
for (int row = 0; row <= state.GetSizeY(); row++)
for (int col = 0; col <= state.GetSizeX(); col++)
this.kletka(g, row, col);
}
private void kletka(Graphics g, int row, int col)
{
int x = (col - 1) * W + 1,
y = (row - 1) * H + 1;
Pen pen = new Pen(Color.Red);
g.DrawRectangle(pen, x - 1, y - 1, x + W, y + H);
}