Вывод графических объектов без события Paint

Бывает так, что вывод графического объекта необходимо произвести не в стандартных ситуациях, то есть не когда возникает событие Paint, а в ответ на другие события. Например, вывести маленький кружок в том месте, где на форме был сделан щелчок мышью. Первое, необходимо получить объект Graphics, а затем выполнить с этим объектом необходимые манипуляции. Объект Graphics можно получить при помощи метода Graphics.FromHwnd(). Обратите внимание, что единственный параметр, передаваемый этому методу, — это значение свойства Handle. Свойство Handle, определено в классе Control и наследуется всеми классами, производными от Control.

private void Form1_MouseDown(Object sender, MouseEventArgs e) {

// Получаем объект Graphics

Graphics g = Graphics.FromHwnd(this.Handle);

// Теперь в месте щелчка мышью рисуем кружок диаметром 10 пикселов

g.DrawEllipse(new Pen(Color.Green), e.X, e.Y, 10, 10);

}

 

При любой перерисовке формы все кружки, выведенные на форме после щелчков мышью, исчезнут. Чтобы информация о графических объектах сохранялась и использовалась при перерисовке формы самый простой способ — создать внутреннюю коллекцию (например, ArrayList) и помещать туда нужные объекты. Затем к этой коллекции будет обращаться метод OnPaint().

 

Возможности класса Graphics

Наиболее часто используемые методы этого класса представлены в таблице.

 

Таблица 5.4. Некоторые методы класса Graphics

Метод Назначение
FromHdc(), FromHwnd(), FromImage() Эти статические методы обеспечивают возможность получения объекта Graphics из элемента управления или изображения
Clear() Заполняет объект Graphics выбранным пользователем цветом, удаляя его предыдущее содержимое
DrawArc() Этот метод предназначен для вывода дуги.
DrawEllipse() Рисует эллипс
DrawLine() Рисует линию
DrawPie() Рисует сектор
DrawPolygon() Рисует замкнутую произвольную область
DrawRectange() Рисует прямоугольник
DrawString() Выводит строку
FillElllpse() Рисует закрашенный эллипс
FillPie() Рисует закрашенный сектор
FillPolygon() Рисует закрашенную криволинейную замкнутую область
FillRectangle() Рисует закрашенный прямоугольник

 

Класс Pen

Pen - класс пера, имеющий два основных атрибута: цвет и ширину. Пример использования, в проекте типа Windows Application внутри любой функции (например OnPaint или функции – обработчике события нажатия кнопки) введите следующий текст:

System.Drawing.Graphics gr = this.CreateGraphics();

System.Drawing.Pen blue = new Pen(Color.Blue); // синее, ширина: 1

System.Drawing.Pen red = new Pen(Color.Red, 2); // красное, ширина: 2

System.Drawing.Pen green = Pens.Green; // зелёное, ширина: 1


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



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