Базовые процедуры и функции
Для построения изображения на экране используется прямоугольная система координат. Отсчет начинается от верхнего левого угла экрана с нуля. Значение X (столбец) увеличивается слева направо, значение У (строка) увеличивается сверху вниз. Чтобы строить изображение, необходимо указывать точку начала вывода. В графических режимах существует невидимый текущий указатель СР (Current Pointer). Процедура MoveTo(X, У) перемещает текущий указатель в точку с координатами X,У. Процедура MoveRel(dX, dY) перемещает СР на dXточек по горизонтали и на dY точек по вертикали относительно СР. Для контроля местоположения СР используют функции GetX и GetY, которые возвращают соответственно значения Х- и У-координаты СР. Для того, чтобы узнать максимально допустимые значения СР для установленного режима, используются функции GetMaxX: integer и GetMaxY: integer.
Графический экран может рассматриваться как одно большое или несколько меньших по размеру окон. Окно - это прямоугольная область экрана, выполняющая функции полного экрана. После установки окна остальная площадь экрана как бы не существует и весь ввод-вывод осуществляется через это окно. В каждый момент может быть активным только одно окно. Если окон несколько, то за переключение ввода-вывода в нужное окно отвечает программист. Для создания окна предназначена процедура
SetViewPort(x1, х2, у1, у2: integer; Clip: boolean),
где х1, у1 - координаты левого верхнего угла, х2, у2 -координаты правого нижнего угла окна. Параметр Clip определяет, будет рисунок отсекаться при выходе за границы окна (Clip:=True) или нет.
Для очистки окна используется процедура ClearVierPort. После ее выполнения все изображения в окне стираются и СР устанавливается в левую верхнюю точку окна. Координатную систему полного экрана можно восстановить с помощью ClearDevice или задав в процедуре установки окна максимально возможные значения:
SetViewPort(0,0, GetMaxX, GetMaxY, True).
Атрибуты текущего окна можно получить с помощью процедуры GetViewSetting (Var Vp: ViewPortType).
Переменная Vp относится к стандартному типу ViewPortType:
Туре
ViewPortType=RECORD
х1,х2, у1,у2: integer;
Clip: boolean
383
end;
Фон ("закраска") графического окна устанавливается с помощью процедур SetFillPattern и Ваг, например:
SetViewPort( 100, 50,500, 200, True);
SetFillStyle(1,3); (*выбор типа фона*)
Bar(100,50,500,200); (*формирование фона*)
В библиотеке GRAPH
вывод точки осуществляется процедурой PutPixel(X, Y: integer; Colonword), где X, Y - экранные координаты расположения точки, Color - ее цвет (от 0 до 15). Для определения цвета точки в конкретной позиции экрана служит функция GetPixel(X, Y: integer): word. Из точек возможно построение линий. Это выполняет процедура Line(X7, Y1, Х2, Y2), где Х1, Y1 - координаты начала, Х2, Y2 - координаты конца линии. Например:
Line(1,1,200,1).
Для черчения линий применяются также еще две процедуры: LineTo(X, Y) и LineRel(c/X, с/У). Первая строит линию из точки текущего положения указателя в точку с координатами X, Y; а вторая проводит линию от точки текущего расположения указателя в точку СРх+dХ, СРу+dY, где СРх и СРу - текущие координаты СР. Установка стиля (тонкие, широкие, штриховые пунктирные линии и т.д.) производится процедурой SetLineStyle (LineStyle: word; Pattern: word; Thickness: word). Параметр LineStyle устанавливает тип строки, который может быть задан поименованной константой или соответствующим ей цифровым значением из табл. 27.3, Pattern -
Таблица 27.3
Тип линии
КОНСТАНТА |
ЗНАЧЕНИЕ |
ОПИСАНИЕ |
SolidLn |
0 |
Непрерывная линия |
DottedLn |
1 |
Линия из точек |
CentedLn |
2 |
Линия из точек и тире |
DashedLn |
3 |
Штриховая линия |
UserLn |
4 |
Тип пользователя |
образец, Thickness - толщину линии, определяемую константами из табл. 27.4.
Таблица 27.4
Толщина линии
КОНСТАНТА |
ЗНАЧЕНИЕ |
ОПИСАНИЕ |
NormWidth |
1 |
Нормальная толщина |
ThickWidth |
3 |
Жирная линия |
384
Процедура GetLineSettings(Var linelnfo: LineSettingsType) возвращает текущий стиль, образ и толщину линии, установленные SetLineStyle.
Тип LineSettingsType имеет следующее стандартное описание:
Туре
LineSettingType=Record
LineStyle: word;
Pattern: word;
Thickness: word end;
Для установления
режима вывода (копирование или наложение) линии на экран предназначена процедура SetWriteMode(Mode). Значение Mode определяется стандартными константами:
Const
CopyPut=0;
XORPut=1;
Аргумент Mode может принимать одно из двух значений. Если Mode=0, то пикселы, лежащие на отрезке прямой линии, переопределяют пикселы на экране и линия на экране имеет текущий цвет. Если Mode=1, то пикселы, образующие линию, имеют код цвета, равный результату операции исключающее ИЛИ над кодами текущего цвета и цвета пикселов на экране, через которые эта линия проходит.
385
383 :: 384 :: 385 :: Содержание
Содержание раздела