Объявление клиентской области формы недействительной

Во время работы приложения Windows Forms может понадобиться явно инициировать событие Paint в коде, вместо того, чтобы ожидать, пока окно станет “естественно грязным” в результате действий конечного пользователя. Например, можно построить программу, которая позволяет пользователю выбирать из множества предопределенных образов, используя специальное диалоговое окно. После закрытия диалогового окна нужно нарисовать выбранное изображение в клиентской области формы. Очевидно, если вы станете ждать, пока окно станет “естественно грязным”, пользователь не увидит изменений до тех пор, пока не изменит размер окна или не перекроет его другим окном. Чтобы программно вынудить окно перерисовать себя, просто вызовите унаследованный метод Invalidate ():

public partial class MainForm: Form

{

...

private void MainForm_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

// Здесь визуализировать корректное изображение.

}

private void GetImageFromDialog()

{

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

// Перерисовать всю клиентскую область.

Invalidate();

}

}

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

// Перерисовать заданную прямоугольную область Form.

private void UpdateUpperArea()

{

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

Invalidate(myRect);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: