Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

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

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

В ходе выполнения приложения 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);
}

Оглавление книги


Генерация: 1.537. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз