Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_1 / С_15_Работа с графикой.ppt
Скачиваний:
14
Добавлен:
19.04.2015
Размер:
1.4 Mб
Скачать

15. Работа с графикой.

Для взаимодействия приложений Microsoft Windows с

графическими устройствами такими, как видеоадаптер или принтер предназначен интерфейс графических устройств GDI.

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

Microsoft Windows не определяют тип видеоадаптера (EGA, VGA, SVGA и т. п.), а работают с логическим видеоадаптером, имеющим широкие характеристики: способность отображать практически любой цвет, огромное разрешение и т. д.

Выполняя запрос приложения, GDI обращается к драйверу соответствующего устройства вывода, работающему, в свою очередь, непосредственно с физическим устройством вывода. В процессе

выполнения запроса GDI (или драйвер) учитывает

ограниченные возможности видеоадаптера и его

С точки зрения приложений интерфейс GDI состоит из контекста отображения (display context) и инструментов, предназначенных для рисования.

Контекст отображения можно сравнить с листом бумаги, на котором приложение рисует то или иное графическое

изображение, а также пишет текст. Инструменты для рисования - это перья, кисти (а также шрифты и даже целые графические изображения), с помощью которых создается изображение.

Кроме контекста отображения и инструментов для

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

Приложение может подключать к контексту отображения различные инструменты (например, перья различной

толщины и цвета. Поэтому, если надо нарисовать линию красного или зеленого цвета, перед выполнением

операции следует создать объект, представляющий

Функции рисования GDI, входящие в программный интерфейс Win32 API, не имеют параметров, указывающих цвет или толщину линии. Такие параметры хранятся в контексте

отображения.

Приложение может создать контекст отображения не только

для окна приложения, но и для любого другого графического устройства вывода, например для принтера. В этом случае оно может рисовать на принтере различные

те же функции, что и для В системе С# интерфейс GDI+

приложения.

представлен классом

Graphics, реализующим в себе как свойства контекста отображения, так и инструменты, предназначенные для рисования в этом контексте.

В качестве простейшего примера использования интерфейса GDI+ разработаем приложение, позволяющее рисовать на самой форме с помощью мыши.

Для этого внесём в класс Form1 дополнительное булевское поле и реализуем три обработчика:

Те же команды можно повторить для панели Panel1:

При рисовании подобным образом проявляется неприятный эффект – при перерисовке формы изображение не восстанавливается.

Решение – использовать событие Paint формы или

Основные структуры данных

Структура Size

Предназначена для хранения ширины и высоты объекта и имеет для этого свойства Width и Height.

Для создания объекта Size с нулевыми значениями Width и Height с помощью конструктора по умолчанию:

Size sz = new Size();

Изменить значения свойств в последствии можно, например,

следующим образом: sz.Width = 40; sz.Height = 60;

Создать структуру можно, используя конструкторы

с

аргументами:

 

public

Size(int, int);

 

public

Size(Point);

 

Конструкторы с аргументами позволяют, в момент создания,

инициализировать разные экземпляры структуры по- разному

Size sz1 = new Size(10,20); // Width = 10, Height = 20;

Структура Point

Содержит свойства X и Y целого типа. Для создания точки “pt” можно использовать конструктор по умолчанию:

Point pt = new Point();

Конструктор по умолчанию при создании точки обнуляет значения свойств X и Y.

В дальнейшем координаты точки можно изменить, например, следующим образом:

pt.X = 25; pt.Y = 75;

Инициализировать новую точку класса Point, можно используя, конструкторы с аргументами:

public Point(Size); public Point(int, int);

Например:

 

 

 

Point

pt1 = new Point(10,20); //

pt1.X=10,

pt1.Y=20

Size

szm = new Size(27,45);

 

 

 

Point pt2 = new Point(szm);

//

pt2.X=27,

pt2.Y=45

Структура Rectangle

Предназначена для определения координат и размера прямоугольника. Используются следующие свойства:

Свойства для чтения и записи:

Location − координата левого верхнего угла прямоугольника

X − определяет x-координату левого верхнего угла прямоугольника;

Y − определяет y-координату левого верхнего угла прямоугольника;

Size − определяет размер прямоугольника; Height − определяет высоту прямоугольника; Width − определяет ширину прямоугольника:

Свойства только для чтения:

Left и Top − определяют соответственно X и Y координаты

левого верхнего угла прямоугольника;

Right и Bottom − определяют соответственно X и Y