Обновление области клиента формы

Обновление области клиента формы

В ходе выполнения приложения GDI+ может возникнуть необходимость в явном вызове события Paint вместо ожидания того, что окно станет "естественно грязным". Например, вы создаете программу, которая позволяет пользователю выбрать подходящий рисунок из набора точечных изображений в пользовательском диалоговом окне. После закрытия диалогового окна нужна отобразить выбранный пользователем рисунок в области клиента формж. Очевидно, если ждать, когда окно станет "естественно грязным", пользователь не увидит изменений до того, как изменятся размеры окна или его часть откроется из-под другого окна. Чтобы вызвать перерисовку окна программно, просто вызовите наследуемый метод Invalidate().

public partial class MainForm: Form {

 …

 private void MainForm_Paint(object sender, PaintEventArgs e) {

  Graphics g = e.Graphics;

  // Здесь выполняется визуализация изображения.

 }

 private void GetNewBitmap() {

  // Отображение диалогового окна и получение нового образа.

  // Перерисовка клиентской области.

  Invalidate();

 }

}

Метод Invalidate() является перегруженным, чтобы вы могли указать прямоугольную область для перерисовки, а не перерисовывать все области клиента (что делается до умолчанию). Чтобы обновить только заданный прямоугольник слева вверху области клиента, вы можете использовать следующее.

// Перерисовка прямоугольной части формы.

private void UpdateUpperArea() {

 Rectangle myRect = new Rectangle(0, 0, 75, 150);

 Invalidate(myRect);

}