logo
TurboProlog / Документация / TOM_1

Текущая позиция (тп)

Текущей позицией (ТП) является такая точка экрана или поля вывода

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

можете напечатать текст или провести линию из текущей позиции.

Вы можете поместить текущую позицию в определенном месте с помощью

предиката moveto или передвинуть ее на определенное расстояние с помощью

moverel. Предикаты getx и gety возвращают соответственно координаты x и y

текущей позиции (относительно поля вывода). getmaxx и getmaxy возвращают

максимальные значения x и y для текущего графического драйвера и режима.

getx/1

getx возвращает координату x текущей позиции.

getx(Xcur) /*(o)*/

(integer)

gety/1

gety возвращает координату y текущей позиции.

gety(Ycur) /*(o)*/

(integer)

moveto/2

moveto устанавливает текущую позицию в позиции (X,Y) поля вывода.

moveto(X,Y) /*(i,i)*/

(integer,integer)

moverel/2

moverel сдвигает текущую позицию на расстояние (X,Y).

moverel(DX,DY) /*(i,i)*/

(integer,integer)

getmaxx/1

getmaxx возвращает в Xmax максимальное значение x для текущего гра-

фического драйвера и режима.

getmaxx(Xmax) /*(o)*/

(integer)

Например, в CGA в режиме 320*200, Xmax будет равен 319. getmaxx удо-

бен для центровки изображения, определения границ области на экране и

т.д.

getmaxy/1

getmaxy возвращает в Ymax максимальное значение y для текущего гра-

фического драйвера и режима.

getmaxy(Ymax) /*(o)*/

(integer)

Например, в CGA в режиме 320*200, Ymax будет равен 199.

Рисование линий и фигур

С помощью предикатов BGI можно рисовать цветные линии, дуги, окруж-

ности, эллипсы, прямоугольники, многоугольники и различные фигуры, осно-

ванные на комбинации этих фигур. Вы можете заполнять любую фигуру (или

область, окружающую ее) любым из 11 данных шаблонов заполнения области

или сами определять шаблон заполнения.

Линии

Вы можете контролировать толщину и шаблон проводимых линий с помощью

предиката setlinestyle. Для определения текущего шаблона линии и ее тол-

щины служит предикат getlinesettings. С помощью предикатов line, linerel

и lineto можно проводить линии между двумя определенными точками, от те-

кущей позиции на определенное расстояние или между текущей позицией и оп-

ределенной точкой.

setlinestyle/3

setlinestyle используется для того, чтобы задать толщину проводимых

линий (а также граничных линий для закрашиваемых фигур) и вид линий

(сплошная, пунктирная и т.д. или вид, определенный пользователем).

setlinestyle(LineStyle, Upattern, Thickness) /*(i,i,i)*/

(integer, integer, integer)

Аргумент LineStyle определяет шаблон линий (такие как сплошная, пун-

ктирная, пунктир с точкой и прерывистый пунктир). В файле GRAPDECL.PRO

даны символьные имена целым константам определяющим эти линии:

Таблица 17.4 Константы, определяющие шаблоны линий

----------------------------------------------------------------

Название линии Значение Описание

----------------------------------------------------------------

solid_LINE 0 сплошная линия

dotted_LINE 1 пунктирная линия

center_LINE 2 пунктир с точкой

dashed_LINE 3 прерывистый пунктир

userbit_LINE 4 вид линии, определенный

пользователем

----------------------------------------------------------------

Вы можете определить шаблон линии с помощью аргумента Upattern, за-

давая 16-ти битовую маску. Линия определяется следующим образом: маска

определяет отрезок линии длиной в 16 пиксел, линия будет проводиться цве-

том для рисования линий только в тех пикселах, которым соответствуют не-

нулевые биты в маске. Например, сплошная линия соответствует значению

Upattern $FFFF (все пикселы окрашиваются), а пунктирной линии будет соот-

ветствовать значение Upattern $3333 или $0F0F.

Аргумент Thikness определяет толщину проводимых линий (нормальная

или жирная).

Таблица 17.5 Константы, определяющие толщину линий

----------------------------------------------------------------

Название Значение Описание

----------------------------------------------------------------

norm_WIDTH 1 ширина в 1 пиксел

thick_WIDTH 3 ширина в 3 пиксела

----------------------------------------------------------------