русс | укр

C# - Главная
Контакты
Задайте вопрос...
Просмотр всех вопросов


Пространство имен
  ► System
  ► Microsoft


Для учеников (начинающих)
  ► Видео уроки
  ► Обучение
  ► Примеры программ
  ► Секреты в Си Шарп

Для профессионалов
  ► Обучение
  ► Примеры программ
  ► Задачки - для тебя!










Работа с графикой на платформе .NET

.NET Framework реализует расширенный графический интерфейс GDI+, обладающий широким набором возможностей. Но для рисования в формах достаточно иметь три объекта - перо, кисть и контекст области, в которой осуществляется рисование.

Класс Graphics

Класс Graphics - это основной класс, необходимый для вывода графики, он и является контекстом области для отображения графики. Кроме этого, класс Graphics предоставляет множество методов для изображения геометрических фигур и различных графических объектов. Класс Graphics, так же, как и другие рассматриваемые здесь классы для перьев и кистей, находятся в пространстве имен Drawing.

Объекты этого класса зависят от контекста объекта или устройства, (графика не обязательно отображается на форме  Вашего приложения, она может выводиться на кнопке, в панель или в окно для ввода текста, но кроме этого - на принтер, плоттер или другие устройства), поэтому создание объектов класса Graphics выполняется не традиционным способом - без вызова конструктора класса. Создаются объекты специальными методами разных классов. Например, метод CreateGraphics класса Control, от которого наследуются все визуальные элементы пользовательского интерфейса – возвращает объект, ассоциированный с выводом графики в соответствующий элемент.

При рисовании непосредственно в форме можно объявить в классе формы поле, описывающее экземпляр класса Graphics:

public class SomeForm : Form
{
private Graphics graph;

}

а в конструкторе формы произвести связывание с реальным объектом:
graph = this.CreateGraphics();

Затем всюду в программе, где нужно работать с графикой, следует использовать глобальный для формы объект graph и его методы. Есть другой способ получения этого объекта - обработчики некоторых событий получают объект класса Graphics среди передаваемых им аргументов. Например, в обработчике события Paint, занимающегося перерисовкой любого визуального компонента – от кнопки до формы - этот объект можно получить так:

protected override void OnPaint(object sender, PaintEventArgs e)
{
Graphics gr = e.Graphics;     // получение графического контекста
gr.DrawLine(…);                // рисование в нем линии
}

Для получения этого объекта можно использовать и статические методы самого класса Graphics.

Методы класса Graphics

У класса Graphics большое число методов и свойств. Упомянуть стоит лишь о некоторых из них. Группа статических методов класса позволяет создать объект этого класса, задавая, например, описатель (handle) контекста устройства.

Для рисования наиболее важны три группы методов. К первой относится перегруженный метод DrawString, позволяющий выводить тексты в графическом режиме. Вторую группу составляют методы Draw - DrawEllipse, DrawLine, DrawArc и другие, позволяющие цветным пером (объектом класса Pen) рисовать геометрические фигуры: линии, различные кривые, прямоугольники, многоугольники, эллипсы и прочее. К третьей группе относятся методы Fill - FillEllipse, FillPie, FillRectangle и другие, позволяющие нарисовать и закрасить фигуру кистью. Кисти (объекты классов, производных от Brush), могут быть разные - сплошные, узорные, градиентные.
Класс Pen

Методам группы Draw класса Graphics, рисующим контур фигуры, нужно передать перо - объект класса Pen. В конструкторе этого класса можно задать цвет пера и его толщину (чаще говорят "ширину пера"). Цвет задается объектом класса (структурой) Color. Для выбора подходящего цвета можно использовать упоминавшееся выше диалоговое окно Color либо одно из многочисленных статических свойств класса Color, возвращающее требуемый цвет. Возможно и непосредственное задание элементов структуры в виде комбинации RGB - трех цветов - красного, зеленого и голубого. Вместо создания нового пера с помощью конструктора можно использовать специальный класс предопределенных системных перьев.
Класс Brush

Класс Brush, задающий кисти, устроен более сложно. Начну с того, что класс Brush является абстрактным классом, так что создавать кисти этого класса нельзя, но можно создавать кисти классов-потомков Brush. Таких классов пять - они задают кисть:

  • SolidBrush - для сплошной закраски области заданным цветом;
  • TextureBrush - для закраски области заданной картинкой (image);
  • HatchBrush - для закраски области предопределенным узором;
  • LinearGradientBrush - для сплошной закраски с переходом от одного цвета к другому, где изменение оттенков задается линейным градиентом;
  • PathGradientBrush - для сплошной закраски с переходом от одного цвета к другому, где изменение оттенков задается более сложным путем.

Первые два класса кистей находятся в пространстве имен System.Drawing, остальные - в System.Drawing.Drawing2D.

Просмотров: 3673






© 2012 ci-sharp.ru При использовании материала прямая индексирующая ссылка на сайт ОБЯЗАТЕЛЬНА.
Права строго защищены нормами международного права, интеллектуальной собственности и авторского права.