![](/user_photo/2706_HbeT2.jpg)
- •Оглавление
- •Комбинированный урок №17
- •Графические возможности языка Pascal
- •Работа в графическом видеорежиме
- •Инициализация графического режима
- •Управление экраном и окнами
- •Управление цветом и фоном
- •Построение простейших графических изображений Отображение точки
- •Отображение отрезков прямых линий
- •Построение прямоугольников
- •Построение дуг, эллипсов и окружностей
- •Управление курсором
- •Вывод текстовой информации в графическом видеорежиме
- •Алгоритм построения окон и статических объектов в них
- •Реализация имитации движения графических объектов
- •Контрольные вопросы:
Управление курсором
Чтобы построить изображение, необходимо обязательно указать начальную позицию. В текстовом режиме эту позицию определяет положение курсора, который размещается каждый раз за последним отображенным символом и указывает на местоположение следующего. В графическом режиме видимого курсора нет, но есть невидимый текущий указатель СР (Current Point), выполняющий те же функции, что и курсор в текстовом режиме. Текущий указатель называют также графическим курсором.
Для определения текущих координат графического курсора используют функции GetX:integer и GetY:integer.
Для перемещения графического курсора используют процедуры MoveTo и MoveRel.
Процедура MoveTo(X,Y:integer); перемещает текущий указатель в точку с координатами X,Y. Процедура MoveRel(dX,dY:integer); перемещает текущий курсор в точку, которая находится на расстоянии dX,dY от текущей позиции. При задании положительных значений dX или dY значения соответствующих координат увеличиваются, при задании отрицательных – уменьшаются.
Вывод текстовой информации в графическом видеорежиме
При выводе графических изображений на экран иногда нужно вывести текстовые обозначения или надписи.
Отметим, что в графическом режиме все действия производятся только со строковыми константами и переменными. Вся числовая информация должна быть предварительно преобразована в символьную с помощью процедуры Str.
В графическом видеорежиме вывод текстовой информации выполняется с помощью штриховых и побитовых (растровых, матричных) шрифтов. В штриховых шрифтах при построении символа используется векторный способ (символ определяется серией отрезков). Побитовый или растровый шрифт определен матрицей 8×8 пикселов для каждого символа. Главное отличие штриховых шрифтов от растровых состоит в том, что при увеличении размера символов растрового шрифта качество изображения ухудшается, а при увеличении размера символов штрихового шрифта – не ухудшается.
Каждый штриховой шрифт хранится в соответствующим файле с расширением .chr. Необходимо, чтобы файлы *.chr находились в том же каталоге, что и файлы графических драйверов (*.bgi).
Стандартный набор шрифтов может включать 9 шрифтов, однако не все из них подключают русский алфавит.
Таблица 5. Константы некоторых типов шрифтов
Константа |
Значение |
Название шрифта |
DefaultFont TriplexFont SmallFont SansSerifFont GothicFont |
0 1 2 3 4 |
Растровый шрифт 8×8 Полужирный шрифт Тонкий шрифт Рубленный шрифт Готический шрифт |
По умолчанию принимается растровый шрифт DefaultFont размера 1.
Процедура SetTextStyle(Font:word; Direction:word; CharSize:word); служит для установки шрифта. В ней Font задает шрифт, Direction – ориентацию и направление вывода символов, CharSize – размер отображаемых символов. Direction может принимать значение HorizDir=0 (направление слева направо) или VertDir=1 (направление снизу вверх.). Если указать Direction=2, то каждый символ будет повернут на 90° против часовой стрелки (т.е. окажется "лежащим на боку") и вывод будет производиться в горизонтальном направлении, однако не все шрифты поддерживают этот режим.
Параметр CharSize (размер символов) может принимать целочисленные значения от 0 до 10, причем 0 соответствует размеру, стандартному для данного шрифта, а 10 является максимальным размером, но не для всех шрифтов.
Процедура SetUserCharSize(MultX, DivX, MultY, DivY:word); позволяет управлять размером символов. Здесь первые два параметра задают размер по горизонтали, два следующие – по вертикали. Если принять за 1 значение ширины символа стандартного шрифта, то отношением MultX/DivX задается ширина символа шрифта, а MultY/DivY – высота.
Вывод тестовой информации на экран в графическом режиме выполняется процедурами OutText и OutTextXY.
Процедура OutText(TextString:string); выводит на экран строку текста, начиная с текущего положения указателя.
Процедура OutTextXY(X,Y:integer; TextString:string); выводит строку текста, начиная с точки, имеющей координаты (X,Y).