Смекни!
smekni.com

Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.x (стр. 19 из 24)

в отсчете от левого верхнего угла экрана.

* procedure MoveRel(Dx,Dy:integer);

Смещает курсор без рисования относительно его текущего поло-

жения. Dx, Dy - смещения курсора по координатам x и y.

* function GetX: word;

Определяет для курсора значение координаты X.

* function GetY: word;

Определяет для курсора значение координаты Y.

УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМ РИСОВАНИЯ

При управлении положением курсора полезными оказываются также

справочные функции GetMaxX и GetMaxY, которые возвращают координаты

самой правой и самой нижней возможных графических позиций курсора,

соответственно, для текущего графического драйвера и режима.

* procedure ClearDevice;

Очищает экран от следов предшествовавшего рисования и восста-

навливает исходные параметры графики.

* procedure SetViewPort(X1,Y1,X2,Y2:word;Clip:boolean);

Устанавливает прямоугольное окно рисования с перемещением

курсора в левый верхний угол окна. Параметры процедуры имеют следу-

ющий смысл:(X1,Y1) и (X2,Y2) определяют соответствввенно координаты

левого верхнего и правого нижнего углов окна, а Clip принимает

значение true при необходимости отсечения изображения за границами

окна и false, когда этого делать не надо .

* procedure ClearViewPort;

Очищает текущее окно, заполняя его первым цветом текущей

цветовой палитры, и переводит курсор в левый верхний угол окна.

* procedure GetViewSettings(var ViewPortType);

Возвращает параметры активного окна просмотра в переменной

ViewPort. Тип ViewPortType описан в модуле Graph.

0

ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ

В данном разделе не рассматривается управление

цветом и стилем рисования и закрепляется за

фоном светло-серый, а за курсором синий цвет.

* procedure LineTo(X,Y:integer);

щ

Проводит отрезок прямой от текущего положения

курсора к заданной точке (X,Y).

* procedure LineRel(Dx,Dy:integer);

2

Рисует отрезок прямой по направлению к точке,

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

стояние Dx и Dy по осям OX и OY .

* procedure Line(X1,Y1,X2,Y2:integer);

3

Проводит прямую между точками (X1,Y1) и

(X2,Y2).

После выполнения этой и последующих процедур

курсор возвращается в предшествующее положение.

ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ

* procedure Rectangle(X1,Y1,X2,Y2:integer);

4

Строит контуры прямоугольника с координатами

левого верхнего (X1,Y1) и нижнего правого

(X2,Y2) углов.

* procedure Bar(X1,Y1,X2,Y2:integer);

5

Строит прямоугольник, закрашенный текущим цветом

и орнаментом заполнения. (X1,Y1), (X2,Y2) -

координаты левого верхнего и правого нижнего

углов соответственно.

* procedure Bar3D(X1,Y1,X2,Y2:integer;

* Depth:word;Top:boolean)

6

Рисует аксонометрию закрашенного по фасаду

прямоугольного параллелепипеда.

(X1,Y1),(X2,Y2) - координаты левого верхнего и

правого нижнего углов

прямоугольного фасада.

Depth - ширина боковой грани (отсчитывается по

годизонтали.

Top - признак включения верхней грани.

ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ

* procedure DrawPoly(NumPoints:word;

* var PolyPoints);

7Строит ломаную линию.

NumPoints - число вершин многоугольника

PolyPoints - переменная без типа, содержащая

NumPoints+1 пар координат вершин многоугольника

(первая и последняя вершины должны совпадать).

* procedure FillPoly(NumPoints:word;var PolyPoints);

8

Закрашивает многоугольник текущим цветом и

орнаментом. Параметры NumPoints и PolyPoints

именют тот же смысл и тип, что и одноимеынные

параметры процедуры DrawPoly.

0

01С ПОМОЩЬЮ КАКИХ ПРОЦЕДУР МОЖНО НАИБОЛЕЕ РАЦИОНАЛЬНО ПОСТРОИТЬ

ОТРЕЗОК , ЕСЛИ ИЗВЕСТНЫ КООРДИНАТЫ КОНЦОВ?

1 LineTo(X,Y);

Line(X1,Y1,X2,Y2);

2 Line(X1,Y1,X2,Y2);

DrawPoly(NumPoint,PolyPoints);

3 LineTo(X,Y);

Line(X1,Y1,X2,Y2);

DrawPoly(NumPoint,Poly Points);

4 Line(X1,Y1,X2,Y2);

*

02КАК ПОСТРОИТЬ СТОЛБЧАТУЮ ДИАГРАММУ В ЗАРАНЕЕ СФОРМИРОВАННОЙ РАМКЕ?

1

1 Bar3D(X1,Y1,X2,Y2,Depth,true);

SetViewPort(X1,Y1,X2,Y2,false);

ClearViewPort;

Bar3D(X1,Y2,X2,Y3,Depth,false);

2 Bar3D(X1,Y1,X2,Y2,Depth,true);

SetViewPort(X1,Y1,X2,Y2,Depth,true);

ClearViewPort;

Bar3D(X1,Y1,X2,Y3,Depth,false);

3 Bar3D(X1,Y1,X2,Y2,Depth,true);

Bar3D(X1,Y2,X2,Y3,Depth,false);

4 Bar3D(X1,Y1,X2,Y2,Depth,true);

Bar3D(X1,Y2,X2,Y3,Depth,true);

*

03КАК НА ПОЛНОСТЬЮ ЗАКРАШЕННОМ ЭКРАНЕ ПОЛУЧИТЬ НЕЗАКРАШЕННУЮ ПРЯМОУ-

ГОЛЬНУЮ ОБЛАСТЬ?

1 Bar(X1,Y1,X2,Y2);

SetViewPort(X1,Y1,X2,Y2,true);

ClearViewPort;

2 Bar(X1,Y1,X2,Y2);

3 Bar3D(X1,Y1,X2,Y2,Depth,true);

4 Bar3D(X1,Y1,X2,Y2,false);

*

04КАК ИСКЛЮЧИТЬ ПОЯВЛЕНИЕ НА ЭКРАНЕ ЗАТЕНЯЕМЫХ КОНТУРОВ НИЖНЕГО

2 ПАРАЛЛЕЛЕПИПЕДА В ОБЬЕМНОЙ СТОЛБЧАТОЙ ДИАГРАММЕ?

1 Использовать процедуру Bar3D дважды. построенный верхний парал-

лелепипед "закроет" автоматически верхнюю грань нижнего парал-

лелепипеда.

2 Установить параметр Top=false в процедуре Bar3D при построении

нижнего параллелепипеда.

3 Установить параметр Top=false в процедуре Bar3D при построении

верхнего параллелепипеда.

4 Построить ломаную линию соответствующую контурам верхней грани

нижжнего параллелепипеда с помощью процедуры DrawPole и закра-

сить его в белый цвет с помощью процедуры FillPole.

*

05КАК НА ЭКРАНЕ ЗАКРАСИТЬ БЕЛЫМ ЦВЕТОМ ОБЛАСТЬ, ОГРАНИЧЕННУЮ ЗВЕЗДОЙ?

1 Построить звезду с помощью процедуры DrawPole(10,zve),где zve -

константа типа PointType, является массивом координат вершин

фигуры и содержит 10 элементов.

2 Использовать процедуру DrawPole(10,zvez) , где константа zvez

содержит 11 элементов.

3 Применить процедуру FillPole(10,zves), где константа zves содер-

жит 11 элементов.

4 Установить цвет рисования белый и с помощью процедуры

FillPole(10,zves) построить звезду, закрашенную белым цветом.

*

06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ ВОЗМОЖНО УСТАНОВИТЬ СТРОКОВОЕ

НАЗВАНИЕ ТЕКУЩЕГО ГРАФИЧЕСКОГО АДАПТЕРА?

1 Функция GetDriverName;

2 Функция GetModeName(ModeNumber);

3 Функция GetMaxMode;

4 Процедура GetModeRange(GraphDriver;LowMode,HighMode);

*

07СУЩЕСТВУЕТ ЛИ ВОЗМОЖНОСТЬ ОПРЕДЕЛЕНИЯ ЗНАЧЕНИЯ КООРДИНАТ КУРСОРА.

1 Нет

2 Да, с помощью функций GetX, GetY.

3 Да, с помощью функций GetMaxX, GetMaxY.

4 Да, с помощью функции MoveRel.

*

08С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ПРОГРАММЫ МОЖНО ВЫВЕСТИ НА ЭКРАН

3 СЛЕДУЮЩУЮ КАРТИНКУ? КУРСОР НАХОДИТСЯ В ТОЧКЕ (X1,Y1).

1 Line(X,Y,X1,Y1);

MoveRel(X,Y+dY);

Line(X,Y+dY,X1,Y1);

MoveRel(0,dY);

LineTo(X1,Y1);

2 LineTo(X1,Y1);

LineRel(0,dY);

LineRel(0,2dY);

3 LineTo(X,Y);

MoveRel(0,dY);

Line(X,Y+dY,X1,Y1);

MoveRel(0,dY);

Line(X,Y+2dY,X1,Y1);

4 LineTo(X,Y);

LineRel(0,dY);

LineRel(0,2dY);

*

09ГДЕ ПОМЕЩАЕТСЯ КУРСОР И КАКОЙ ФОН ЭКРАНА УСТАНАВЛИВАЕТСЯ ПРИ

ВХОЖДЕНИИ В ГРАФИЧЕСКИЙ РЕЖИМ С ПОМОЩЬЮ ПРОЦЕДУРЫ InitGraph?

1 Курсор помещается в центр экрана и устанавливается черный

цвет фона экрана.

2 Курсор помещается в правый верхний угол экрана и устанав-

ливается черный цвет фона экрана.

3 Курсор помещается в левый верхний угол экрана и устанавлива-

ется черный цвет фона экрана.

4 Курсор помещается в левый верхний угол экрана и устанавлива-

ется белый цвет фона экрана.

*

10С КАКОЙ ЧАСТОТОЙ ОБНОВЛЯЕТ ЭКРАН КОНТРОЛЛЕР ДИСПЛЕЯ ПЭВМ IBM?

1 50-60 раз/сек

2 20-40 раз/сек

3 100-120 раз/сек

4 200 раз/сек

*

0

011Процедуру LineTo(X,Y) можно использовать только в случае, когда 002

один из концов отрезка совпадает с положением курсора.

*

2Ответ правильный. Однако, применение процедуры DrawPoly в данном 004

случае не является рациональным.

*

3Процедуру LineTo(X,Y) можно использовать только в случае, когда один002

из концов отрезка совпадает с положением курсора. Процедура DrowPoly

не является в данном случае рациональной.

*

4Ответ правильный. 005

*

*

021Отввет неверный. Верхний параллелепипед будет иметь очищенную перед-002

нюю грань. Это не требуется по условию задачи. При этом неверно

указаны параметры процедуры Bar3D при построении второго параллеле-

пипеда.

*

2Неправильно указаны параметры процедуры SetViewPort. Координаты окна002

отсчитываются от левого верхнего угла экрана в то время как для про-

цедуры Bar3D от левого верхнего угла окна.

*

3Ответ правильный. 005

*

4Ответ не точный.На экране появятся затененные контуры нижнего парал-003

лелепипеда.

*

*

031Ответ не точный.Процедуры SetViewPort и ClearViewPort в данном слу- 003

чае излишние,т.к.уже процедура Bar рисует прямоугольную область,

которую закрашивает первым цветом палитры, если цвет не задан ранее

*

2Ответ правильный 005

*

3Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002

не прямоугольную область.

*

4Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002

не прямоугольную область.

*

*

041Ответ неверный. Процедура Bar3D рисует контуры аксонометрии закра- 002

шенного по фасаду параллелепипеда. Боковая и верхняя грани не закра-

шиваются, т.о. затемненная часть верхней грани нижнего параллелепи-

педа не исчезнет.

*

2Ответ правильный. 005

*

3Ответ неверный. Параметр Top процедуры Bar3D регулирует наличие или 002

отсутствие верхней (а не нижней) левой грани аксонометрии.

*

4Ответ неверный. Достаточно установить параметр Top=False процедуры 002

Bar3D. Дополниетльные меры излишне.

*

*

051Ответ неверный. Процедура DrawPoly построит звезду с одной невидимой002

гранью. Цвет фигуры будет соответствовать цвету фона.

*

2Ответ неверный. Цвет фигуры будет соответствовать цвету фона и будет002

белым только в случае, когда фон экрана белый.

*

3Ответ правильный. 005

*

4Ответ правильный. Однако, закраска белым цветом возможна и 004

по умолчанию.

*

*

061Ответ правильный. 005

*

2Ответ неверный. Функция GetModeName возвращает строковое название 002

требуемого графического режима для текущего адаптера.

*

3Ответ неверный.Функция GetMaxMode возвращает максимальный номер 002

графического режима для текущего адаптера.

*

4Ответ неверный. Процедура GetModeRange выдает справку о диапазоне 002

номеров графических режимов заданного графического адаптера.

*

*

071Ответ неверный. Такая возможность существует. 002

*

2Ответ правильный. 005

*

3Ответ неверный. Данные процедуры возвращают максимально возможные 002

для текущего драйвера и режима графические позиции курсора.