Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. Celebrity Reflection – новейший лайнер класса Премиум
  2. Demographics-the Basic Picture
  3. II. Финансовые методы управления
  4. String - методы
  5. Unit B Graphics User Interface
  6. АБСОЛЮТ (литера класса А)
  7. Абстрактные методы

Цель работы

Используя полученные в курсе лекций, практических занятий и лабораторных работ знания и навыки, создать простейший графический редактор для Windows.

Общие сведения

2.1. Литература

1. "С# для профессионалов, том I". Глава 9, стр. 335-358 – основы создания Windows-приложений.

2. "С# для профессионалов, том II". Глава 21, стр. 691-735 – графические возможности платформы.NET Framework.

2.2. Работа с графикой на платформе.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.

 

2.3. Прототип простейшего графического редактора

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

Упрощенно эта схема представлена на рисунке 1.

Рис. 1. Упрощенная архитектура графического редактора (модель – контроллер - представление).

Пример реализации данной архитектуры (с комментариями) прилагается в виде готового приложения – примера простейшего графического редактора.


Дата добавления: 2015-10-31; просмотров: 100 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Доступ к полям объекта через свойства| Обзор каталога № 7 2015

mybiblioteka.su - 2015-2024 год. (0.008 сек.)