Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Вывод изображений в относительных координатах.



 

В модуле Graph языка Паскаль имеется возможность рисовать фигуры, используя относительные координаты. Для этого используется понятие " текущий указатель" Текущий указатель (CP – Current Pointer) используется во многих графических системах. Понятие СР аналогично понятию курсора для текстового режима, за исключением того, что текущий указатель невидим. Для вывода произвольных графических изображений используется ряд процедур.

 

Процедура MoveTo

 

Функция: Перемещает текущий графический указатель в точку ( x, y ).

Описание: MoveTo ( x, y ).

 

Процедура MoveRel

Функция: Перемещает текущий указатель на расстояние, заданное относительными координатами от его текущей позиции.

Описание: MoveRel ( Dx, Dy ).

Примечания: Процедура MoveRel перемещает текущий указатель в точку, заданную относительным расстоянием ( Dx, Dy ) от точки, в которой находится текущий указатель. Относительные команды перемещения и рисования полезны при вычерчивании различных объектов на экране, у которых начальная точка может быть изменена (чтобы, например, вычертить ту же самую фигуру в другом месте экрана).

 

Процедура LineRel

Описание: LineRel ( Dx, Dy ).

Примечания: Данная процедура вычерчивает прямую линию из текущей точки в точку, заданную относительным расстоянием ( Dx, Dy ) от текущего указателя. Процедура рисует прямую линию, толщина и тип которой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Относительные команды перемещения и рисования полезны при вычерчивании различных объектов на экране, у которых начальная точка может быть изменена (чтобы, например, вычертить ту же самую фигуру в другом месте экрана).

 

Процедура LineTo

Описание: LineTo ( x, y ).

Примечания: Рисует прямую линию, толщина и тип которой задаются процедурой SetLineStyle, а цвет задается процедурой SetColor. Заметим, что MoveTo (1000, 100); LineTo (200, 200) эквивалентно Line (100, 100, 200, 200).

Первый метод требует большего времени для выполнения и большего объема памяти для выполняемого кода. Используйте LineTo только тогда, когда текущий указатель находится в одном из концов прямой. Отметим, что второй метод не изменяет значения текущего указателя.

 

Процедура ClearDevice

Функция: процедура ClearDevice устанавливает текущий указатель в исходное положение (точка с координатами (0, 0)) и очищает экран, заполняя его цветом фона.

Работа с текстами в графическом режиме.

 

Чтобы иметь возможность вывода текстовой информации, система программирования должна поддерживать работу не менее чем с одним шрифтом. Шрифт представляет собой набор символов, используемых для отображения текстовой информации. С точки зрения " потребителя", шрифты различаются начертанием символов. Программисту важен еще и способ хранения информации о форме символов. При работе с графикой Турбо Паскаля используются два вида шрифтов, различающихся своим внутренним форматом – растровые (он один) и векторные (их несколько).

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

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

Векторные шрифты существуют в виде отдельных файлов, имеющих расширение.chr и расположенных в том же каталоге BGI Турбо Паскаля, что и графические драйверы. Чтобы программы выполнялись правильно, им должны быть доступны файлы со всеми необходимыми шрифтами. Если графическая программа не сможет найти необходимый шрифт, то это приведет к сбою в работе в ее работе, будет просто использоваться шрифт, заданный по умолчанию. " Стандартные" (т.е. входящие в исходную поставку Турбо Паскаля) векторные шрифты не содержат русских букв. Впрочем, существуют векторные шрифты, созданные программистами и поддерживающие работу с русским алфавитом. Их можно приобрести и установить в Турбо Паскаль.

Для работы с текстами в Турбо Паскале имеются несколько процедур.

 

Процедура SetTextStyle

Функция: Устанавливает текущий тип текстового шрифта, его направление, размер.

Описание: SetTextStyle (шрифт, направление,

 размер символа).

Шрифт принимает одно из следующих значений:

DefaultFont=0 – растровый шрифт;

TriplexFont=1 – векторный шрифт;

SmallFont=2 – векторный шрифт;

SanSerifFont=3 – векторный шрифт;

GothicFont=4 – векторный шрифт.

 

Направление текста принимает одно из двух значений:

HorizDir=0 – слева направо;

Vertyr=1 – снизу вверх. 

 

Размер символа принимает значение от 0 до 10. Значение 1 соответствует шрифту 8х8, а 10 соответствует 80х80.

 

Процедура SetTextJustify

Описание: SetTextJustify ( horj, verj ).

Примечания: устанавливает выравнивание в горизонтальном (horj) и вертикальном (verj) направлениях.

Типы выравнивания:

Горизонтальное:

LefText=0 – влево;

CenterText=1 – по центру;

RightText=2 – вправо.

 

Вертикальное:

BottomText=0 – вниз;

CenterText=1 – по центру;

TopText=2 – вверх.

 

Процедура GetTextSettings

Функция: Возвращает текущий тип текстового шрифта, его направление, размер и выравнивание, установленные с помощью процедур SetTextStyle и SetTextJustify.

Описание:

SetTextSettings( var TextInfo: TextSettingsType).

 

Процедура OutText

Функция: Пересылает строку на устройство вывода в то место, в котором находится текущий указатель.

Описание: OutText (строка: string ).

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

В данной процедуре используется шрифт, установленный процедурой SetTextStyle. Процедура OutText использует параметры вывода, установленные процедурой SetTextJustify (выравнивание, центрирование и др.). Текущий указатель изменяется процедурой OutText только в том случае, если направление вывода текста горизонтальное и задано выравнивание по левой границе. Направление вывода текста (горизонтальное или вертикальное) задается с помощью процедуры SetTextStyle, а выравнивание – с помощью процедуры SetTextJustify.

 

Процедура OutTextXY

Функция: Пересылает строку на устройство вывода.

Описание: OutTextXY ( X, Y, текст_строка).

Примечания: Строка, заданная параметром " текст_строка", выводится в точке ( x, y ). Если строка слишком длинная и выходит за пределы экрана или текущей области просмотра, то она усекается.

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

 

Графические окна

 

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

Описание: SetViewPort ( x 1, y 1, x 2, y 2, Clip ).

Примечания: Точка ( x 1, y 1) задает верхний левый угол области просмотра, а точка с координатами ( x 2, y 2) определяет правый нижний угол области просмотра. Булевская переменная Clip определяет, будет ли изображение отсекаться текущими границами области просмотра. Определены следующие константы: ClipOn: = True; ClipOff: = False.

Процедура SetViewPort (0, 0, GetMaxX, GetMaxY, ClipOn ) всегда задает в качестве области просмотра все поле графического экрана.

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

 


Поделиться:



Последнее изменение этой страницы: 2020-02-16; Просмотров: 124; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.02 с.)
Главная | Случайная страница | Обратная связь