- •Интерактивные графические системы
- •Лабораторная работа 1-2.
- •Создание программ построения графиков, используя графические примитивы api Windows. Создание меню, для отображения различных графических объектов
- •Содержание
- •Мировые и экранные координаты.
- •Графические библиотеки.
- •Программирование графики в Windows.
- •Контекст устройства
- •Получить контекст устройства
- •Контекст устройства в Windows программах.
- •Аналогичную схему создания и уничтожения пера можно представить в виде.
- •Графические примитивы api Windows.
- •Шрифты True Type в Windows программах.
- •Обработка сообщений меню Windows программы
- •Задание к выполнению лабораторной работы.
- •Часть 1. Написать Windows программу для своего варианта, которая рисует сразу два графика в одних координатных осях.
Лабораторные работы по дисциплине
Интерактивные графические системы
Лабораторная работа 1-2.
Создание программ построения графиков, используя графические примитивы api Windows. Создание меню, для отображения различных графических объектов
Содержание
1. Мировые и экранные координаты …………………………… стр. 1.
2. Графические библиотеки ……………………………… ……. стр. 4.
3. Программирование графики в Windows ………………….…. стр.5.
4. Компиляция WIN32 –программ с помощью VISUAL C++ 2008. стр. 11.
5. Компиляция WIN32 –программ с помощью VISUAL C++ 2005. стр. 11.
6. Контекст устройства…………………………. …………….……стр. 15
7. Пример программы построения графика в Windows…………..стр. 16.
8. Контекст устройства в Windows программах …………….……стр. 21
9. Графические примитивы API Windows……………………....….стр. 23
10. Шрифты True Type в Windows программах………………..……стр. 29
11. Создание меню с помощью VISUAL C++ 2008………….…....…стр. 31
12. Создание меню с помощью VISUAL C++ 2005………….…....…стр. 32
13. Обработка сообщений меню Windows программы…………..…стр. 38
14. Задание к выполнению лабораторной работы…………..………. стр. 48
Мировые и экранные координаты.
При отображении пространственных объектов на экране, используется координатное описание. Рассмотрим две системы координат. Первая система координат – мировая система координат. Координаты мировой системы координат описывают истинное положение объекта в пространстве. На Рис.1. изображен график функции в мировой системе координат.
Рис.1.
Мировая система координат и поле вывода.
Прежде чем переносить график на экран монитора, следует учесть, что график будет располагаться в пределах поля вывода, размеры которого обычно меньше размеров экрана. В мировой системе координат поле вывода можно определить, задав координаты левого нижнего угла (xLeft, yBottom) и координаты правого верхнего угла (xRight, yTop). На Рис.1. поле вывода имеет следующие размеры: xLeft = -2, xRight = 10, yBottom = -2, yTop = 2.
Размерность мировых координат зависит от рассматриваемой задачи. Если речь идет о пространственном расположении графического объекта, то размерность координат совпадает с размерностью длины. В этом случае единицей измерения являются метры или километры. Если же в мировых координатах изображается процесс, то координата x может быть временем и измеряться в секундах, а координата y может быть током и измеряться в амперах.
Вторая система координат – экранная (или физическая) система координат. Эта система координат связана с устройством вывода - экраном монитора, принтером, и т.д. На Рис.2. показан экран монитора и оси экранной системы координат.
Рис.2.
Экран монитора и экранная система координат.
Начало экранной системы координат (0, 0) располагается в левом верхнем углу экрана. Ось n направлена слева направо, ось m – сверху вниз Рис.2. В качестве единицы измерения в данной системе координат используется пиксель.
Поле вывода можно расположить в любом месте экрана, задав в экранной системе координат координаты левого нижнего угла (nLeft, mBottom) и координаты правого верхнего угла (nRight, mTop).
Необходимо сопоставить каждой точке A в мировых координатах (x, y) соответствующую точку A в экранных координатах (n, m). Для перехода от мировой системы координат к экранной системе координат, обычно выбирают линейный закон преобразования координат. Это линейное преобразование должно удовлетворять единственному требованию, чтобы углы поля вывода в мировой системе координат, соответствовали углам поля вывода в экранной системе координат. Запишем это линейное преобразование.
n = (x - xLeft)/(xRight - xLeft)*(nRight - nLeft) + nLeft;
m = (y - yBottom)/(yTop - yBottom)*(mTop - mBottom) + mBottom;
В этом случае мировые координаты (x, y) точки A будут изменяться в пределах
Экранные координаты (n, m) точки A будут изменяться соответственно в пределах
Удобно эти соотношения оформить в виде двух inline- функций xn() и ym(). Приведем соответствующий фрагмент кода на языке программирования C++.
//переход от координаты x к пикселю n
inline int xn(double x){
return (x - xLeft)/(xRight - xLeft)*(nRight - nLeft) + nLeft; }
//переход от координаты y к пикселю m
inline int ym(double y){
return (y - yBottom)/(yTop - yBottom)*(mTop - mBottom) + mBottom; }