У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 1 Тема- Основы работы с Win32 GDI Цель- Освоить навыки работы с Win32 GDI

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.3.2025

6

PAGE  5

Лабораторная работа №1

Тема: «Основы работы с Win32 GDI»

Цель: Освоить навыки работы с Win32 GDI.

1. Основные сведения

Возможность вывода графических изображений самым простым способом производятся функциями GDI (Graphic Device Interface). Интерфейс графических устройств GDI операционной системы Windows предназначен для взаимодействия приложений Windows с графическими устройствами, такими, как видеомонитор, принтер или плоттер.

Когда приложения обращаются к GDI для выполнения операций вывода графического изображения, они работают не с реальными (физическими) устройствами вывода, а с логическими. Приложения Windows не определяют тип видеомонитора, а работают с логическим   видеомонитором, который способен отображать любой цвет и имеет огромное разрешение. Выполняя запрос приложения, GDI обращается к драйверу соответствующего устройства вывода. Драйвер работает непосредственно с физическим устройством вывода. В процессе выполнения запроса GDI учитывает ограниченные возможности физического устройства вывода и его аппаратные особенности, делая необходимые приближения. В зависимости от типа физического устройства, используемого для вывода, GDI может выбрать для отображения цвет, наиболее соответствующий запрошенному и поддерживаемый устройством. Если устройства вывода монохромное, вместо различных цветов могут использоваться градации серого цвета. Поэтому приложение может запросить для вывода любой цвет, но для рисования будет использован только такой, который есть только на данном физическом устройстве. Такая ситуация возникает не только при работе с цветом. Приложение может запросить для вывода шрифт, описав его характеристики, GDI подберёт для вывода наиболее подходящий шрифт, соответствующий описанию, и представит его приложению. Такой механизм удобен для обеспечения аппаратной независимости. Чем лучше используемая аппаратура, чем большими возможностями она обладает, тем ближе будут параметры полученного шрифта и цвета соответствовать запрошенным.

2. Интерфейс GDI

Из чего состоит интерфейс GDI с точки зрения приложения?

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

GDI – медленная система вывода графики, но для большинства прикладных программ, не предъявляющих требований к скорости её достаточно.

3. Контекст отображения

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

Операция вывода на устройство (для принтера или экрана дисплея) осуществляется через контекст устройства. Контекст устройства выступает в роли связующего звена между приложением и драйвером устройства и представляет собой структуру данных.   

4. Описание некоторых функций

Функция MoveToEx()

Перемещает курсор из той точки, где он находился в данный момент, в заданную и возвращает структуру данных, описывающую положение курсора. Идентификатор контекста устройства задаётся hdc. Остальные параметры принадлежат к типу integer. Функция возвращает значения типа BOOL. Координаты начального положения курсора возвращаются в структуре lpPoint.

Параметры функции задаются в следующем порядке:

MoveToEx(hdc, x, y, lpPt)

Если начальное положение точки не требуется, то в качестве последнего параметра можно передать значение nil.

MoveToEx(hdc, x, y, nil);

Функция LineTo()

Позволяет нарисовать линию до указанной точки, при этом сама точка не принадлежит линии. Идентификатор контекста устройства задаётся hdc. Функция возвращает значения типа BOOL.

Параметры функции задаются в следующем порядке:

LineTo(hdc, x, y);

Функции Rectangle()

Рисует прямоугольник, заданный точками x1, y1, x2, y2.

Идентификатор контекста устройства задаётся hdc. Остальные параметры принадлежат к типу integer. Функция возвращает значения типа BOOL.

Параметры функции задаются в следующем порядке:

Rectangle(hdc, x1, y1, x2, y2);

Функции RoundRect()

Рисует прямоугольник с закруглёнными углами, заданный точками x1, y1, x2, y2. Значения x3, y3 задают ширину и высоту эллипса, используемого для закругления углов.

Поскольку прямоугольник является замкнутую фигуру, он заливается. Идентификатор контекста устройства задаётся hdc. Остальные параметры принадлежат к типу integer. Функция возвращает значения типа BOOL.

Параметры функции задаются в следующем порядке:

RoundRect(hdc, x1, y1, x2, y2, x3, y3)

Функция Ellipse()

Используется для рисования эллипса или окружности. Центр эллипса совпадает с центром воображаемого прямоугольника, определяемого точками x1, y1, x2, y2.

Рис.1. Переменные, используемые функцией Arc()

Поскольку эллипс представляет собой замкнутую фигуру, он заливается. Идентификатор контекста устройства задаётся hdc. Остальные параметры принадлежат к типу integer. Функция возвращает значения типа BOOL. Параметры функции задаются в следующем порядке:

Ellipse(hdc, x1, y1, x2, y2).

Функции Arc()

Используются для рисования дуги эллипса. Центр дуги совпадает с центром описанного прямоугольника, описываемого точками с координатами x1, y1, x2, y2. Длина дуги определяется точками с координатами x3, y3, x4, y4, при этом рисование выполняется в направлении против хода часовой стрелки. Рис. 1. Дуга не может быть залита, поскольку она не является замкнутой фигурой.

Идентификатор контекста устройства задаётся hdc. Остальные параметры принадлежат к типу integer. Функция возвращает значения типа BOOL.

Параметры функции задаются в следующем порядке:

Arc(hdc, x1, y1, x2, y2, x3, y3, x4, y4);

Рис.2. Переменные, используемые функцией Arc()

Функция Arc() не обновляет координат точки расположения курсора.

Функция ArcТо() – обновляет текущие координаты курсора.

Функция Chord()

Работает также как и Arc(), но дополнительно замыкается отрезком прямой из точки x3, y3 в точку x4, y4.

Chord(hdc, x1, y1, x2, y2, x3, y3, x4, y4);

Функция Pie()

Используется для вывода эллиптического сектора. Центр эллиптической дуги совпадает с центром воображаемого прямоугольника, определяемого точками  x1, y1, x2, y2. Начальная и конечная точки дуги задаются координатами x3, y3 и x4, y4. От каждой точки к центру прямоугольника рисуется линия, дуга рисуется в направлении против хода часовой стрелки. Поскольку сектор является замкнутой фигурой, он заливается.

Идентификатор контекста устройства задаётся hdc. Остальные параметры принадлежат к типу integer. Функция возвращает значения типа BOOL.

Параметры функции задаются в следующем порядке:

Pie(hdc, x1, y1, x2, y2, x3, y3, x4, y4);

Функция Polygon()

Рисует многоугольник, состоящий из соединённых линиями точек. Многоугольник заполняется, поскольку он является замкнутой фигурой.

Идентификатор контекста устройства задаётся hdc. Остальные параметры принадлежат к типу integer. Функция возвращает значения типа BOOL.

Параметры функции задаются в следующем порядке:

Polygon(hdc, pointarray, nCount);

Функция PolylineTo()

Рисует группу соединённых отрезков прямых, заданных в массиве типа POINT. Функция действует как несколько последовательных вызовов функций: MoveToEx() и LineTo(). Идентификатор контекста устройства задаётся hdc. Число точек в массиве задаётся целым числом. Функция возвращает значения типа BOOL.

Параметры функции задаются в следующем порядке:

PolylineTo(hdc, pointarray, nCount);

Функция PolyDraw()

Функция используется для вывода набора линейных сегментов и кривых Безье. Идентификатор контекста устройства задаётся hdc. Значение параметра lpTypes, указывает на массив значений типа BYTE. Каждое значение в этом массиве задаёт тип соответствующей точки в массиве lpPoint. Число точек в массиве задаётся целым числом.

Параметры функции задаются в следующем порядке:

PolyDraw(hdc, lpPoint, lpTypes, nCount)

5. Порядок выполнения работы

  1. Получите вариант задания у преподавателя.
  2. Напишите программу согласно варианту задания.
  3. Отладьте разработанную программу и покажите результаты работы программы преподавателю.
  4. Составьте отчет по лабораторной работе

6. Варианты  заданий

Задание 1. Написать программу под ОС Windows, выводящую в окне средствами GDI следующие геометрические примитивы:

  1.  отрезок;
  2.  треугольник;
  3.  прямоугольник;
  4.  окружность;
  5.  эллипс;
  6.  дугу окружности;
  7.  сектор;
  8.  кривую Безье;
  9.  пятиконечную звезду.

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

Задание 2. Написать программу, строящую график функции y=f(x) для указанных области определения и области значений. Окно, в котором отображается график, может иметь произвольные размеры, изменяемые пользователем. При изменении размеров окна область определения и область значений сохраняются, а сам график масштабируется в соответствии с новыми размерами области вывода.

Помимо собственно графика функции в окне должны быть выведены оси координат. На осях обязательно должны быть метки и подписаны деления.

Вариант выбирается по последней цифре номера студента в списке группы (для цифры 0 выбирается вариант 10).

  1.  , x[0, 20], y[-20, 20];
  2.   x[-5, 5], y[-5, 5];
  3.  , x[-10, 5], y[-5,10];
  4.   x[-3, 3], y[-3, 3];
  5.   x[-10,10], y[-5,10];
  6.   x[-7, 15], y[0,10];
  7.  , x[-10,10], y[-5, 5];
  8.   x[-5, 5], y[-8, 8];
  9.   x[-10; 10], y[-5, 5];
  10.   x[-4, 4], y[-1, 1].

Примечание. Задания 1 и 2 могут быть объединены в одну программу, в которой предусмотрены средства переключения между отображением примитивов и графиком функции.

7. Содержание отчета

Отчет по лабораторной работе должен содержать следующие сведения:

  1.  название и цель работы;
  2.  вариант задания;
  3.  листинг разработанной программы с комментариями;
  4.  результаты работы программы.

8. Контрольные вопросы

1) Для чего предназначен интерфейс графических устройств GDI?

2) Что такое контекст отображения?

3) Перечислите основные функции.




1. ЗФрейд Психоналитический метод и его философская интерпретация
2. разыскная деятельность органов внутренних дел УФА 2011
3. Work very much My nme is I~m eleven-twelve
4. Лев Троцкий
5. Правовые основы предпринимательской деятельности
6. Податкова адмінітрація України- завдання, функції та структура
7. Політології Поняття та предмет політології
8. Вища школа 1999 ~ С
9. а Москва 1967 год
10. Этуш Владимир Абрамович