Рисование на форме С# - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д