
- •Синхронизация процессов и цепочек
- •Венгерская нотация, ссылки и ресурсы
- •Стандартные кисти, иконки, курсоры
- •Пример:
- •Введение в ресурсы
- •Курсоры, пиктограммы и растровые изображения
- •Работа с текстом
- •Работа с мышью
- •Ресурс панель диалога
- •Основные понятия машинной графики
- •Рассмотрим такие примитивы, как вершина, отрезок, воксель и модели, строящиеся на их основе, а также функциональные модели. Полигональные модели
- •Воксельные модели
- •Поверхности свободных форм (функциональные модели)
- •Проекции
- •Различают следующие проекции.
- •Алгоритм Коэна - Сазерленда отсечения прямоугольной областью
- •Метод дихотомии
- •Задача удаления невидимых линий и поверхностей
- •Удаление нелицевых граней многогранника. Алгоритм Робертса
- •Алгоритм Варнока
- •Алгоритм Вейлера-Азертона
- •Метод z-буфера
- •Методы приоритетов. Алгоритм художника.
- •Алгоритм плавающего горизонта
- •Алгоритмы построчного сканирования для криволинейных поверхностей
- •Библиотека OpenGl
- •Простейшая программа
- •Создание формы
- •Формат пикселя
- •Вершины и система координат
- •Треугольники
- •Многоугольники
- •Область рисования
- •Преобразование координат. Матрицы
- •Видовое преобразование. Масштабирование, поворот и перенос
- •Параметры вида. Перспективная проекция
- •Буфер глубины
- •Надстройки над OpenGl
- •Источник света
- •Свойства материала и модель освещения
- •Отсечение
- •Анализ алгоритмов. Модель вычислений
- •Асимптотический анализ алгоритмов
- •Анализ рекурсивных алгоритмов
- •Метод заметающей прямой
- •Метод локусов. Задачи геометрического поиска
- •Задачи регионального поиска. Многомерное двоичное дерево
- •Задачи локализации точки. Метод луча
- •Локализация точки на планарном подразбиении. Метод полос
- •Некоторые основные понятия вычислительной геометрии
- •Построение звездчатого полигона
- •Предварительная разработка алгоритма построения выпуклой оболочки на плоскости
- •Метод обода Грэхема
- •Триангуляция Делоне
- •Диаграмма Вороного
- •Построение диаграммы Вороного
- •Модель osi
- •Уровни модели tcp/ip
Стандартные кисти, иконки, курсоры
При описании класса окна для всех окон класса можно задать цвет фона окна, курсор, иконку. В Windows предопределены следующие стандартные иконки:
Idi_Application соответствует приложению
Idi_Asterisk информационные сообщения
Idi_Exclamation для предупреждений
Idi_Hand сообщение об ошибках
Idi_Question для ввода информации
Например: WndClas.hIcon := LoadIcon(0, Idi_Application);
Предопределены следующие типы курсоров:
Idc_Arrow стандартная стрелка
Idc_Cross перекрестье
Idc_Ibeam для редактирования
Idc_Size, idc_SizeNesw, idc_SizeNS и т.д. стрелки
Idc_Wait песочные часы.
Например: WndClas.hCursor := LoadCursor(0, Idc_Arrow);
Шаблон заполнения фона окна может быть указан способом задания объекта кисть:
WndClas.hbrBackground := GetStockObject(white_Brush);
или
WndClas.hbrBackground := CreateSolidBrush(RGB(255,5,200));
Интерфейс графических устройств GDI
Интерфейс графических устройств – это модуль программы, который обрабатывает операторы работы с графикой. В GDI содержится много функций, предназначенных для работы с графикой, которые позволяют рисовать точки, прямые, дуги, эллипсы и др. эти функции вывода базовых элементов изображения называются графическими примитивами (описание функций в методичке). GDI также отвечает за преобразование графических команд для всех драйверов устройства вывода, включая мониторы, принтеры и плоттеры. GDI является не зависящим от устройства интерфейсом.
По умолчанию GDI работает в режиме пиксельных координат. Сначала получается информация о драйвере устройства, а затем обеспечивается регулировка, позволяющая вывести фигуру с корректным коэффициентом отношения масштабов по осям и разумным разрешением. Предусмотрены еще семь режимов отображения, позволяющих выводить изображение, опираясь на метрическую систему, английскую систему или единицы измерения, заданные пользователем. Принятая по умолчанию система координат Windows:
Все графические функции GDI используют в качестве параметра контекст устройства – специальную структуру данных. Эта структура содержит основные характеристики устройства, а также различные средства отображения – кисти, карандаши, цвета и т.п. Чаще всего получение и удаление контекста выполняется при обработке сообщения wm_Paint вызовом пары функций BeginPaint и EndPaint.
MyDC:=BeginPaint(MyWnd,MyPaint);
...
{ Работа с контекстом }
...
EndPaint(MyWnd, MyPaint);
Функция BeginPaint заполняет структуру типа TPaintStruct информацией, необходимой для работы функций отображения. (MyPaint – ссылка на структуру TPaintStruct).
Другим способом получения контекста является использование функции GetDC. Эта функция возвращает ссылку на контекст.
MyDC:=GetDC(MyWnd);
...
{ Работа с контекстом }
...
ReleaseDC(MyWnd,MyDC);
В этом случае, получаемый контекст определяет всю рабочую область экрана.
В Windows определены следующие средства для отображения: карандаш, кисть, текст.
Карандаш используется для рисования прямых линий, окружностей, дуг; определяет цвет линии, ее ширину и стиль. Для использования карандаша сначала необходимо получить ссылку на него (тип данных hPen).
Var Pen : hPen;
Pen:=GetStockObject(White_Pen);
Получив таким образом ссылку на карандаш, выбираем его для текущего контекста.
SelectObject(MyDC,Pen);
Здесь использовался стандартный белый карандаш.
Для создания и использования собственного карандаша следует вызвать функцию CreatePen, указав ей стиль, ширину и цвет.
CreatePen(PenStyle, Width: Integer; Color: TColorRef): HPen;
PenStyle: Одна из констант ps_Solid, ps_Dash, ps_Dot, ps_DashDot, ps_DashDotDot, ps_Null или ps_InsideFrame.
Width: Шиpина пеpа (в логических единицах).
Затем необходимо выбрать карандаш функцией SelectObject(MyDC,Pen). По окончании отображения с помощью данного карандаша удалить его функцией DeleteObject.
Кисть используется для заполнения областей внутри замкнутых фигур. Кисть выбирается также как и карандаш. Для создания собственной кисти, выполняющей сплошную закраску области, используется функция CreateSolidBrush.
CreateSolidBrush (Color: TColorRef): HBrush; создание сплошной кисти.
Color: Кисть типа TColorRef.
CreateHatchBrush (Index: Integer; Color: TColorRef): HBrush; создание штриховки.
Index: Одна из констант hs_BDiagonal, hs_Cross, hs_DiagCross, hs_FDiagonal, hs_Horizontal или hs_Vertical.
Цвет букв текста можно изменить при помощи функции:
SetTextColor(MyDC, RGB(255,0,255));
Режим фона может принимать одно из двух значений: opaque (непроницаемый) и transparent (прозрачный). Режим фона устанавливается при вызове:
SetBkMode(MyDC,TRANSPARENT); или цвет фона текста можно изменить:
SetBkColor(MyDC,RGB(0,255,255));
Существует несколько функций, отображающий графические примитивы. Все примитивы рисуют с использованием текущего стиля карандаша и цвета, а также заливают контур, используя текущий стиль кисти и цвет заливки.