![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Координаты устройства и мировые координатыСтр 1 из 3Следующая ⇒
Графический режим Модуль Graph представляет собой библиотеку подпрограмм, обеспечивающих полное управление графическими режимами различных адаптеров дисплеев: CGA, EGA, VGA и других. Библиотека содержит более 50 графических процедур и функций, как базовых (рисование точек, линий, окружностей и т.д.), так и расширяющих возможности базовых (многоугольники, заполнение фигур, вывод текста и др.). Файл BGI – это графический интерфейс (Borland Graphic Interface) фирмы Borland. Он обеспечивает взаимодействие программ с графическими устройствами. Перед работой программ в графических режимах дисплея процедура InitGraph определяет тип адаптера, представленного в ПЭВМ, и загружает в память соответствующий BGI-драйвер, в котором определены режимы работы. Процедура CloseGraph выгружает графический драйвер из памяти и восстанавливает текстовый режим работы видеоадаптера. Процедура инициализации графического режима InitGraph Программа, использующая графику, обязательно должна содержать блок вызовов процедур инициализации графического режима и обращение к процедуре его закрытия. Такой блок инициализирует графический режим, проверяет правильность переключения и, если все операции прошли успешно, допускает дальнейшую работу программы. Процедура инициализации объявлена следующим образом: InitGraph (var GraphDriver : Integer; {тип адаптера} var GraphMode : Integer; {режим графики} DriverPath : String); {путь к драйверу} В модуле Graph определены константы для задания вида графического адаптера параметром GraphDriver. Если параметру GraphDriver присвоить значение константы Detect, то система включится в режим автоопределения. Если возможно переключение системы в графический режим, то инициализируется соответствующий BGI-драйвер и включается режим с максимальным разрешением. В параметрах GraphDriver и GraphMode при этом будут возвращены автоматически выбранные значения или код ошибки. Если параметр GraphDriver содержит номер конкретного адаптера, то и второй параметр GraphMode должен иметь номер режима, допустимого при этом адаптере. Все остальные графические установки (положение текущего указателя, палитра, цвет, параметры графического окна и т.д.) при инициализации принимаются по умолчанию. Параметр DriverPath указывает путь в каталог, содержащий файлы с необходимыми драйверами. Если в него передается значение «пустая строка», то драйверы должны находиться в текущем каталоге. Процедура закрытия графического режима CloseGraph Для окончательного завершения работы в графическом режиме необходимо всегда производить вызов процедуры CloseGraph. Эта процедура не имеет параметров. Она очищает экран, переводит адаптер в текстовый режим и, если возможно, выгружает из памяти все BGI-драйверы и штриховые шрифты. Последующий возврат в графический режим возможен только через повторную инициализацию. Обработка ошибок инициализации
Если же ошибок при инициализации не обнаружено, то в параметре GraphDriver возвращается номер адаптера. Еще есть один способ проверки результата проведения графической операции. Он осуществляется с помощью функции GraphResult : Integer, которая возвращает код результата последнего вызова InitGraph.
Процедура DetectGraph Для тестирования графического адаптера в модуле Graph объявлена процедура: DetectGraph (var GraphDriver, GraphMode : Integer); Эта процедура может быть вызвана до инициализации графического режима. Через формальный параметр GraphDriver возвращается значение номер драйвера, а через параметр GraphMode – номер режима. Эти значения рекомендуется подставлять в качестве фактических параметров в процедуру InitGraph. Пример работы с графическим режимом: Program TestGraph; Uses Graph; Var gDriver : Integer; {для графического адаптера} gMode : Integer; {для графического режима} ErrorCode : Integer; {код ошибки} Begin DetectGraph(gDriver, gMode); {опрос наличия адаптера и его типа} ErrorCode := GraphResult; {получение кода ошибки, если таковая есть} If ErrorCode <> grOK then Writeln(GraphErrorMsg(ErrorCode)); Else Begin InitGraph(gDriver, gMode, ’’); {инициализация граф.режима} ... {работа в графическом режиме} CloseGraph; {закрытие граф.режима} End End. Очистка экрана Процедура ClearDevice очищает графически экран и устанавливает указатель позиции в положение (0, 0). Процедура GraphDefaults, кроме очистки экрана, устанавливает ряд параметров графической системы: 1) графическое окно становится равным размеру экрана; 2) восстанавливается системная цветовая палитра; 3) переназначаются цвета основных линий и фона экрана; 4) толщина и стиль линий принимаются как по умолчанию; 5) цвет и шаблон заливки геометрических фигур и замкнутых ломаных принимается как по умолчанию; 6) переустанавливается активный шрифт и его стиль. Координаты устройства и мировые координаты В растровой компьютерной графике экран представляет собой прямоугольный массив адресуемых точек и любое изображение на нем образуется как композиция светящихся или погашенных пикселов ( так называется минимальный элемент изображения). Эти точки адресуются двумя целыми - горизонтальным номером точки nx и вертикальным номером ny: 0 <= nx <= GetMaxX 0 <= ny <= GetMaxY Функции GetMaxX и GetMaxY возвращают количество адресуемых точек по горизонтали и по вертикали минус единица. Точка (0,0) обычно расположена в левом верхнем углу экрана дисплея. Координаты (nx, ny) называют координатами устройства, и могут принимать только целые значения. В компьютерной графике используются еще две системы координат. Первая – физическая система координат (px, py), где px – физическое расстояние на экране по горизонтали, а py – по вертикали. Ее оси измеряются в физических единицах измерения. Вторая система координат – мировая. Она представляет собой декартову систему (X, Y), определенную программистом, и является независимой от типа устройства отображения: xmin < x < xmax ymin < y < ymax Параметры, которыми задаются диапазоны изменения x и y (xmin, xmax, ymin, ymax), определяют прямоугольную область в абстрактном математическом двумерном пространстве. Для перевода текущих координат точки из мировой системы в систему устройства можно написать следующую процедуру: Procedure WorldToDevice (x, y : Real; world_coord : TWorldRec; var nx, ny : Integer); Begin nx := Round(( x - world_coord.Xmin )/ ( world_coord.Xmax - world_coord.Xmin ))*GetMaxX; ny := Round(( y - world_coord.Ymin )/ ( world_coord.Ymax - world_coord.Ymin ))*GetMaxY; End; TWorldRec = record Xmin, Ymin, {предельные значения мировых координат} Xmax, Ymax : Real; End; |
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 330. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |