
- •Предисловие
- •Лабораторная работа 1
- •Темы для предварительной проработки
- •1.1. Порядок выполнения работы
- •1.2. Содержание отчета
- •1.3. Индивидуальные задания
- •1.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 1а
- •Приложение 1б
- •Приложение 1в
- •Приложение 1г
- •Лабораторная работа 2
- •Темы для предварительной проработки
- •2.1. Порядок выполнения работы
- •2.2. Содержание отчета
- •2.3. Индивидуальные задания
- •2.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 2а
- •Приложение 2б
- •Лабораторная работа 3
- •1.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 3а
- •Приложение 3б
- •Приложение 3в
- •Приложение 3г
- •Лабораторная работа 4
- •4.4. Пример решения задачи
- •Контрольные вопросы
- •Лабораторная работа 5
- •Темы для предварительной проработки
- •5.1. Порядок выполнения работы
- •5.2. Содержание отчета
- •5.3. Индивидуальные задания
- •5.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 5а
- •Лабораторная работа 6
- •Темы для предварительной проработки
- •6.1. Порядок выполнения работы
- •6.2. Содержание отчета
- •6.3. Индивидуальные задания
- •6.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 6а
- •Приложение 6б
- •Константы типа драйвера
- •Константы режимов драйвера
- •Константы цветов
- •Константы стиля и толщины линий (для предикатов GetLineStyle, SetLineStyle)
- •Константы типа шрифта (задаются в предикате settextstyle(Font,Direction,Charsize))
- •Лабораторная работа 7
- •Темы для предварительной проработки
- •7.1. Порядок выполнения работы
- •7.2. Содержание отчета
- •7.3. Индивидуальные задания
- •7.4. Пример решения задачи
- •Контрольные вопросы
- •Приложение 7а
- •Приложение б
- •Редактор о.І. Шпільова
- •61002 Харків, вул. Фрунзе, 21
Контрольные вопросы
Как выполнить инициализацию графического режима?
Как завершить работу графического режима?
Какие примитивы графических объектов используются в BGI-графике?
Какие предикаты реализуют графические примитивы?
Что такое видеостраница, чем она характеризуется? Как организовать переключение видеостраниц?
Что такое цветовая палитра? Назовите цветовые палитры, используемые в BGI-графике.
Что такое шаблон заполнения? Охарактеризуйте стандартные шаблоны заполнения в BGI-графике.
Как создать собственный шаблон заполнения?
Как закрасить графический объект?
Как создать собственный стиль линии?
Назовите стандартные стили линий в BGI-графике.
Как в графическом режиме вывести на экран текстовую информацию?
Что такое пиксель, чем он характеризуется?
Как получить текущие координаты курсора?
Как переместить курсор в нужную позицию?
Приложение 6а
Предикаты BGI-графики и константы драйверов
В Турбо-Прологе 2.0 содержится целый набор весьма эффективных предикатов, типов данных и констант для работы с графическими изображениями. Турбо-Пролог 2.0 имеет в своем составе ряд программ драйверов для наиболее распространенных видеоадаптеров. Эти драйверы хранятся в файлах с расширением .BGI (Borland Graphic Interface). Для шрифтов используются файлы описаний .CHR.
Таблица 6А.1 – Предикаты для работы с графикой
Предикат |
Назначение |
arc(X,Y,StAngle,EndAngle,Radius) (integer,integer,integer,integer, integer) – (i,i,i,i,i) |
Рисует дугу окружности с центром (X,Y), радиусом Radius от угла StAngle до угла EndAngle линией текущего цвета от горизонтальной оси против часовой стрелки |
bar(Left,Top,Right,Bottom) (integer,integer,integer,integer) – (i,i,i,i) |
Рисует закрашенный прямо-угольник с координатами левого верхнего угла (Left,Top) и правого нижнего (Right,Bottom) |
bar3d(Left,Top,Right,Bottom,Depth, Topflag) (integer,integer,integer,integer,intege r,integer) – (i,i,i,i,i,i) |
Рисует закрашенный паралле-лепипед с параметрами: Left,Top – координаты левого верхнего угла; Right,Bottom – координаты правого нижнего угла; Depth – глубина; Topflag –верхняя грань (0 – отсутствует, 1 – присутствует) |
circle(X,Y,Radius) (integer,integer,integer) – (i,i,i) |
Рисует окружность с координатами центра (X,Y) и радиусом Radius |
Cleardevice |
Очистка графического экрана. Указатель текущей позиции переносится в точку с координатами (0,0)
|
Продолжение табл. 6А.1
Предикат |
Назначение |
clearviewport |
Очистка текущего графического окна |
closegraph |
Завершение работы в графическом режиме |
detectgraph(Graphdriver, Graphmode) (integer,integer) – (o,o) |
Проверка аппаратных средств и определение графического драйвера |
drawpoly(PolyPointsList) (bgi_ilist) – (i) |
Рисование многоугольника по заданному списку координат |
ellipse(X,Y,StAngle,EndAngle, Xradius,YRadius) (integer,integer,integer,integer, integer,integer) – (i,i,i,i,i,i) |
Эллиптическая дуга с центром (X,Y) от начального угла StAngle до конечного угла EndAngle, Xradius – горизонтальный радиус, Yradius – вертикальный радиус |
fillellipse(X,Y,Xradius,YRadius) (integer,integer,integer,integer) – (i,i,i,i) |
Закрашенный эллипс с центром (X,Y), Xradius – горизонтальный радиус, Yradius – вертикальный радиус |
fillpoly(PolyPointsList) (bgi_ilist) – (i) |
Рисование закрашенного многоугольника по заданному списку координат |
floodfill(X,Y,Border) (integer,integer,integer) – (i,i,i) |
Закрашивает фигуру, контур которой нарисован цветом Border; X,Y – точка внутри контура |
getarccoords(X,Y,Xstart,Ystart, Xend,Yend) (integer,integer,integer,integer, integer,integer) – (o,o,o,o,o,o) |
Возвращает параметры последнего использования предиката arc |
getaspectratio(Xasp,Yasp) (integer,integer) – (o,o) |
Возвращает эффективную разрешающую способность графического экрана Xasp – по горизонтали, Yasp – по вертикали |
getbkcolor(BkColor) (integer) – (o) |
Возвращает номер текущего цвета фона BkColor |
Продолжение табл. 6А.1
Предикат |
Назначение |
getcolor(Color) (integer) – (o) |
Возвращает номер текущего цвета линии Color |
getdrivername(DriverName) (string) – (o) |
Возвращает строку с именем текущего графического драйвера |
getdefaultpalette(DefaultPalette) (bgi_ilist) – (o) |
Возвращает список значений, определяющий текущую палитру |
getfillpattern(PatternList) (bgi_ilist) – (o) |
Возвращает список значений, определяющий текущий шаблон закрашивания |
getfillsettings(FillPattern,FillColor) (integer,integer) – (o,o) |
Возвращает номера текущих стандартного шаблона и цвета заполнения |
getgraphmode(GraphMode) (integer) – (o) |
Возвращает текущее значение графического режима |
getimage(Left,Top,Right,Bottom, BitMap) (integer,integer,integer,integer,string) – (i,i,i,i,o) |
Копирует прямоугольный участок видеопамяти с координатами Left,Top,Right,Bottom в буфер BitMap |
getlinesettings(LineStyle,Upattern, Thickness) (integer,integer,integer) – (o,o,o) |
Возвращает текущий стиль и толщину линии |
Getmaxcolor(MaxColor) (integer) – (o) |
Возвращает наибольшее значение цвета используемой палитры |
getmaxx(X) (integer) – (o) |
Возвращает максимальную координату по горизонтали |
getmaxy(Y) (integer) – (o) |
Возвращает максимальную координату по вертикали |
getmaxmode(MaxMode) (integer) – (o) |
Возвращает максимальный номер допустимого режима для загруженного графического драйвера |
Getmodename(DriverMode, ModeName) (integer,string) – (i,o) |
Возвращает строку ModeName с именем по заданному графическому режиму DriverMode |
Продолжение табл. 6А.1
Предикат |
Назначение |
getmoderange(Graphdriver,Lomode, Himode) (integer,integer,integer) – (i,o,o) |
Возвращает значения наименьшего и наибольшего номеров графических режимов, допустимых для заданного драйвера |
getpalette(PaletteList) (bgi_ilist) – (o) |
Возвращает список значений текущей палитры |
getpalettesize(PaletteSize) (integer) – (o) |
Возвращает размер таблицы цветов текущей палитры |
getpixel(X,Y,Color) (integer,integer,integer) – (i,i,o) |
Возвращает цвет пикселя с координатами X,Y |
gettextsettings(Font,Direction, CharSize,Horiz,Vert) (integer,integer,integer,integer, integer) – (o,o,o,o,o) |
Возвращает текущий шрифт текста Font, направление Direction, размер CharSize и параметры выравнивания текста по горизонтали и вертикали Horiz,Vert |
getviewsettings(Left,Top,Right, Bottom,Clip) (integer,integer,integer,integer, integer) – (o,o,o,o,o) |
Возвращает параметры текущего графического окна, режим отсечения изображения |
getx(X) (integer) – (o) |
Возвращает координату Х текущей позиции относительно начала окна |
gety(Y) (integer) – (o) |
Возвращает координату Y текущей позиции относительно начала окна |
graphdefaults |
Устанавливает все параметры графической системы в исходное состояние, т.е. устанавливает параметры по умолчанию |
imagesize(Left,Top,Right,Bottom, Size) (integer,integer,integer,integer, integer) – (i,i,i,i,o) |
Возвращает размер Size (в байтах) для сохранения участка видеопамяти прямоугольника, заданного координатами (Left,Top), (Right,Bottom). Если требуется больше 64К памяти, то возвращается 0. |
Продолжение табл. 6А.1
Предикат |
Назначение |
initgraph(Graphdriver,Graphmode, NewDriver,NewMode, Pathtodriver) (integer,integer,integer,integer,string) – (i,i,o,o,i) |
Инициализирует графическую систему и переключает монитор в графический режим. Graphdriver – номер драйвера. Graphmode – режим работы. Pathtodriver – путь к папке, хранящей файл драйвера. Параметры драйвера и режима работы см. в прил. 6Б. NewDriver,NewMode |
line(X0,Y0,X1,Y1) (integer,integer,integer,integer) – (i,i,i,i) |
Рисует линию от точки (X0,Y0) до точки (X1,Y1). Положение указателя не меняется |
linerel(Dx,Dy) (integer,integer) – (i,i) |
Рисует линию от текущего положения указателя до точки со смещением Dx,Dy относительно текущего положения указателя. Указатель перемещается и позиционируется по заданному смещению |
lineto(X,Y) (integer,integer) – (i,i) |
Рисует линию от текущего положения указателя до точки с координатами (X,Y). Указатель перемещается в точку с заданными координатами |
moverel(Dx,Dy) (integer,integer) – (i,i) |
Перемещает указатель в точку со смещением (Dx,Dy) относительно его текущих координат |
Moveto(X,Y) (integer,integer) – (i,i) |
Перемещает указатель в точку с координатами (Dx,Dy) |
Outtext(Textstring) (string) – (i) |
В текущей позиции курсора выводит на экран строку Textstring,. Выравнивание текста выполняется в соответствии с параметром, установленным предикатом SetTextJustify |
Продолжение табл. 6А.1
Предикат |
Назначение |
outtextxy(X,Y,Textstring) (integer,integer,string) – (i,i,i) |
В позиции курсора (X,Y) выводит на экран строку Textstring. Указатель текущей позиции не меняется. Выводимая строка обрезается по границам экрана. |
pieslice(X,Y,Stangle,Endangle, Radius) (integer,integer,integer,integer, integer) – (i,i,i,i,i) |
Рисует и заполняет сегмент круга радиусом Radius с центром в точке X,Y от угла Stangle до угла Endangle |
putimage(X,Y,Bitmap,Op) (integer,integer,string,integer) – (i,i,i,i) |
Содержимое буфера Bitmap выводится на участок видеопамяти, начиная от левого верхнего угла (X,Y). Op – тип двоичной операции копирования (прил. 6Б). Если изображение не помещается, оно не выводится |
putpixel(X,Y,Pixelcolor) (integer,integer,integer) – (i,i,i) |
В точке (X,Y) рисуется пиксель цветом Pixelcolor |
rectangle(Left,Top,Right,Bottom) (integer,integer,integer,integer) – (i,i,i,i) |
Рисует прямоугольник с координатами левого верхнего (Left,Top) и правого нижнего угла (Right,Bottom). Рисование выполняется линией со стилем и цветом, заданными до вызова данного предиката |
Restorecrtmode |
Восстанавливает видеорежим, установленый до инициализации графикки |
setactivepage(Page) (integer) – (i) |
Устанавливает активную страницу Page для вывода графической информации |
setallpalette(PaletteList) (bgi_ilist) – (i) |
Заменяет все цвета палитры цветами, заданными списком PaletteList. Первый параметр списка – размер палитры, остальные – значения цветов палитры |
Продолжение табл. 6А.1
Предикат |
Назначение |
setaspectratio(Xasp,Yasp) (integer,integer) – (i,i) |
Изменяет текущие значения разрешающей способности экрана на Xasp и Yasp |
setbkcolor(Color) (integer) – (i) |
Устанавливает текущий цвет фона Color, используя цвета текущей палитры |
setcolor(Color) (integer) – (i) |
Устанавливает текущий цвет Color для рисования, используя цвета текущей палитры |
setfillpattern(UpatternList,Color) (bgi_ilist,integer) – (i,i) |
Устанавливает задаваемый пользователем образец UpatternList и цвет Color для закрашивания фигур |
setfillstyle(Pattern,Color) (integer,integer) – (i,i) |
Устанавливает один из стандартных образцов закрашивания фигур Pattern и цвет закрашивания Color |
setgraphmode(Mode) (integer) – (i) |
Переводит видеосистему в заданный графический режим Mode и очищает экран |
setgraphbufsize(BufSize) (integer) – (i) |
Изменяет размер буфера BufSize для попиксельного и сплошного заполнения фигур |
setlinestyle(Linestyle,Upattern, Thickness) (integer,integer,integer) – (i,i,i) |
Устанавливает стандартный стиль Linestyle или пользовательский шаблон Upattern для рисования линии. Thickness задает толщину линии |
setpalette(Index,Actual_color) (integer,integer) – (i,i) |
Заменяет указанный цвет палитры Index другим цветом Actual_color |
settextjustify(Horiz,Vert) (integer,integer) – (i,i) |
Устанавливает способ выравнивания текста по горизонтали Horiz и по вертикали Vert |
settextstyle(Font,Direction,Charsize) (integer,integer,integer) – (i,i,i) |
Устанавливает шрифт Font, направление вывода Direction и размер символов Charsize |
Продолжение табл. 6А.1
Предикат |
Назначение |
setusercharsize(Multx,Divx,Multy, Divy) (integer,integer,integer,integer) – (i,i,i,i) |
Изменяет ширину и высоту в штриховых шрифтах Multx/Divx – коэффициент увеличения ширины символов; Multy/Divy - коэффициент увеличения высоты символов |
setviewport(Left,Top,Right,Bottom, Clip) (integer,integer,integer,integer, integer) – (i,i,i,i,i) |
Устанавливает текущую область изображения окна (Left,Top,Right,Bottom) для вывода графической информации, Clip – условие вывода изображения при превышении размеров окна |
setvisualpage(Pagenum) (integer) – (i) |
Делает видимой указанную видеостраницу.Pagenum |
setwritemode(WriteMode) (integer) – (i) |
Устанавливает режим WriteMode занесения в память при рисовании линий |
textheight(Textstring,Height) (string,integer) – (i,o) |
Возвращает высоту Height строки Textstring в пикселях |
textwidth(Textstring,Width) (string,integer) – (i,o) |
Возвращает ширину Width строки Textstring в пикселях |