Рефераты

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

I I {Действия в новом графическом режиме}.

I I I-- RestoreCrtMode - временный переход в текстовому режиму.

I I I {Действия в текстовом режиме}.

I I I-> SetGraphMode - возврат в графический режим.

I I {Действия в графическом режиме}.

I I-----> CloseGraph

I {Действия в текстовом режиме}.

I--------> end. - завершение программы.

* proсedure InitGraph(var GraphDriver:integer;

* var GraphMode:integer;

* DriverPath:string);

Инициализирует графическую систему, устанавливает графический

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

цвета и т.д..

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ

GraphDriver - переменная, в которую необходимо записать код

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

требуется автоматическое определение драйвера.

GraphMode - переменная, в которую процедура помещает код

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

DriverPath - строка, содержащая путь к драйверу (если строка

пустая, считается, что драйвер находится в текущем

каталоге).

В случае аварийной ситуации процедура устанавливает код ошибки:

-2 - нет графического адаптера;

-3 - нет драйвера устройства;

-4 - ошибка в драйвере;

-5 - нет памяти для загрузки драйвера;

-10 - недопустимый режим для выбранного драйвера.

* procedure CloseGraph(без параметров);

Восстанавливает текстовый режим работы дисплея,бывший до вызова

графической системы, и освобождает динамическую память компьютера,

отведенную под графический драйвер.

* procedure SetGraphMode(Mode:integer);

Mode - графический режим.Изменяет ранее используемый графи-

ческий режим либо возвращает систему в прежний графический режим

после временного перехода к текстовому режиму. Условием использо-

вания оператора является сохранение в динамической области ОЗУ ранее

загруженного графического драйвера.

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ

* procedure RestoreCrtMode(без параметров);

Восстанавливает исходный текстовый режим дисплея без потери в

динамической области ОЗУ програмы графического драйвера.

Имеется ряд операторов для получения справок о текущем

графическом режиме:

* function GetDriverName:string; -

Возвращает строковое название

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

* function GetModeName(ModeNumber:integer):string -

Возвращает строковое название

требуемого графического режима.

* function GetMaxMode:integer -

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

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

адаптера.

* procedure GetModeRange(GraphDriver:integer;

* var LowMode,HighMode:integer); -

Выдает справку о диапазоне номеров графических режимов задан-

ного графического адаптера. Возвращаемые параметры LowMode и

HighMode означают минимальный и максимальный номера графических

режимов, соответственно.

* function GetGraphMode:integer; -

Возвращает номер текущего графического режима.

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ

* procedure GetAspectRatio(var Xasp, Yasp:word); -

Возвращает в своих параметрах ввеличины

дискретов экрана по осям X и Y ,сооответственно.

0

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

В графическом режиме также как и в текстовом положение выво-

димых на экран данных в каждый момент времени определяется курcо-

ром. Однако, в этом случае курсор невидим. При вхождении в гра-

фический режим с помощью процедуры InitGraph курсор автоматически

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

(черный) цвет палитры. Для определения и изменения положения курсора

без рисования в TURBO-PASCAL предусмотрены операторы MoveTo,MoveRel,

GetX,GetY.

* procedure MoveTo(x,y:integer);

где x,y - координаты по горизонтали и вертикали соответственно

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

* 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

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

*

4Ответ неверный. Процедура MoveRel смещает курсор относительно его 002

текущей позиции.

*

*

1081Ответ неверный. Рисунок будет иметь следующий вид: 002

*

2 2Ответ неверный.Рисунок будет иметь следующий вид: 002

*

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

*

3 4Ответ неверный. рисунок будет иметь следующий вид: 002

*

*

091Ответ неверный. 002

*

2Ответ неверный. 002

*

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

*

4Ответ неверный. 002

*

*

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

*

2Ответ неверный. 002

*

3Ответ неверный. 002

*

4Ответ неверный. 002

*

*

0

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ

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

палитрой и стилем рисования.

* procedure GetPalette(var PaletteType);

Возвращает текущую плитру и количество цветов в ней. Применя-

ется только в графическом режиме и только с драйверами EGA, EGA 64

и VGA.

* procedure SetAllPalette(var Palette);

Меняет все цвета палитры на заданные. Переменная без типа

Palette в первом байте содержит число N- количество цветов в палитре

а в последующих N байах - коды задаваемых цветов. Если задана вели-

чина -1, то исходный цвет остается без изменений.

* procedure SetPalette(NumberColor:word;Color:byte);

Изменяет один из цветов палитры. NumberColor - порядковый

номер изменяемого цвета. Color -код нового цвета.

* procedure SetColor(Color:word);

Устанавливает текущий цвет рисования.Color - код цвета либо

его имя. Возможные значения параметра приведены на следующем экране

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

_____________________________________________________________________

Имя Значение Назначение

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

Black 0 черный

Blue 1 синий

Green 2 зеленый

Cyan 3 голубой

Red 4 красный

Magenta 5 фиолетовый

Brown 6 коричневый

LightGray 7 светло-серый

DarkGray 8 темно-серый

LightBlue 9 светло-синий

LightGreen 10 светло-зеленый

LightCyan 11 светло-голубой

LightRed 12 розовый

LightMagenta 13 светло-фиолетовый

Yellow 14 желтый

1White 15 белый

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

* procedure SetBKColor(Color:word);

Устанавливает цвет фона рисования. Color - код или имя цвета.

Для получения справок о кодах цветов, связанных с курсором и

фоном рисования, используются функции:

function GetColor:word;

function GetBKColor:word;

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

способ выражения линий, используемых в изображениях контурных линий

и линий закраски замкнутых фрагментов рисунков.

* procedure SetLineStyle(LineStyle:word; Pattern:word;

* Thiekness:word);

Устанавливает стиль контурных линий и их толщину. Параметр

LineStyle может принимать следующие значения:

SolidLn = 0 ___________________________________________________

DottedLn = 1 ...................................................

CenterLn = 2 ._._._._._._._._._._._._._._._._._._._._._._._._._ .

DashedLn = 3 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

UserBitLn = 4 тип, определяемый пользователем.

Когда LineStyle=userBitLn, задается параметр Pattern - шаблон

линии - двухбайтовое число, каждый бит которого равен 1, если оче-

редной пиксель следует высветить, и 0 в противном случае.

Параметр Thickness устанавливает толщину линий и может при-

нимать следующие значения: NormWidth = 1 - тонкая линия

ThickWidth= 3 - толстая линия

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

* procedure GetLineSettings(var LineInfo:LineSettingsType);

Возвращает параметры текущего стиля контурных линий. Тип

LineSettingsType описан в модуле Graph как запись, поля которой:

LineStyle:word;

Pattern:word;

Thickness:word;, имеют тот же смысл, что и одноименные параметры

процедуры SetLineStyle.

* procedure SetFillStyle[(Pattern:word;Color:word)];

Устанавливает стандартные орнамент и цвет заполнения. "По умол-

чанию" закраска белая сплошная. Параметр Color - установка цвета.

Возможные значения параметра Pattern проиллюстрированы на следующем

экране.

* procedure SetFillPattern(Pattern:FillPatternType;Color:word);

Задает произвольный орнамент и цвет заполнения фигур.

Pattern - задаваемый пользователем орнамент.

typeFillPatternType=array[1..8] of byte;

Color - код цвета в палитре.

* procedure GetFillSettings(varFillInfo:FillSettingsType)

Возвращает код и цвет стандартного образца закраски в пере-

менных Color и Pattern соответственно.

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

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

Имя Значение

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

EmptyFill 0 Фоновым цветом

SolidFill 1 Заданным цветом

LineFill 2

LtSlashFill 3

SlashFill 4

BkSlashFill 5

LtBkSlashFill 6

HatchFill 7

XHatchFill 8

InterLeaveFill 9

WideDotFill 10

CloseDotFill 11

2 UserFill 12 Заполнение определяется пользователем

0--------------------------------------------------------------------

01С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО ВЫВЕСТИ НА ЭКРАН СПИСОК КОДОВ

ЦВЕТОВ НЕИЗВЕСТНОЙ ВАМ ТЕКУЩЕЙ ЦВЕТОВОЙ ПАЛИТРЫ?

1 GetPalette(Palette);

1 2 SetPalette(NumberColor,Color);

3 SetAllPalette(Palette);

4 SetLineStyle(LineStyle,Pattern,Thickness);

*

02УСТАНОВИТЕ НА ЧЕРНОМ ЭКРАНЕ КВАДРАТНОЕ ОКНО И ЗАКРАСЬТЕ ЕГО

СПЛОШНЫМ БИРЮЗОВЫМ ЦВЕТОМ(3).

1 SetFillStyle(0,3);

Bar(X1,Y1,X1+d,Y1+d);

2 SetBKColor(0);

SetColor(3);

Bar(X1,Y1,X1+d,Y1+d);

3 SetBKColor(0);

SetFillStyle(0,3);

Bar(X1,Y1,X1+d,Y1+d);

4 SetFillStyle(0,3);

SetBKColor(0);

Bar(X1,Y1,X1+d,Y1+d);

*

03С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ВОЗМОЖНО ЗАКРАСИТЬ ПРЯМОУГОЛЬНУЮ

ОБЛАСТЬ КРАСНОГО(4) ЭКРАНА ЧАСТОЙ СЕТКОЙ(9) СИНЕГО ЦВЕТА(1)?

1 SetBKColor(4);

SetFillStyle(9,1,0);

Bar(X1,Y1,X2,Y2);

2 SetBKColor(4);

Rectangle(X1,Y1,X2,Y2);

SetFillStyle(9,1,0);

3 SetBKColor(4);

SetFillStyle(9,1);

Bar(X1,Y1,X2,Y2);

4 SetBKColor(4);

Bar(X1,Y1,X2,Y2);

SetFillStyle(9,1);

*

04ИМЕЕТСЯ ЛИ В ЯЗЫКЕ TURBO PASCAL ВОЗМОЖНОСТЬ УСТАНАВЛИВАТЬ

ПРОИЗВОЛЬНЫЙ (ПО ЖЕЛАНИЮ ПОЛЬЗОВАТЕЛЯ) ЦВЕТ РИСОВАНИЯ, СТИЛЬ И

ТОЛЩИНУ ЛИНИЙ РИСОВАНИЯ?

1 Нет

2 Только цвет

3 Только стиль линий

4 Только стиль и толщину линий

*

05НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ КОНТУРОВ ПРЯМОУГОЛЬНИКА ЛИНИЯМИ,

СОСТОЯЩИМИ ИЗ ЧЕРЕДУЮЩИХСЯ ПАР ТОЧЕК И ТИРЕ.

1 GetLineStyle(0,0,1);

Rectangle(X1,Y1X2,Y2);

2 SetLineStyle(4,$3,1);

Rectangle(X1,Y1,X2,Y2);

3 SetLineStyle(4,3,1);

Rectangle(X1,Y1,X2,Y2);

4 SetLineStyle(0,13,1);

Rectangle(X1,Y1,X2,Y2);

*

06КАК ОБЕСПЕЧИТЬ ЗАКРАСКУ КАКОЙ-ЛИБО ОБЛАСТИ ЭКРАНА КРАСНЫМ(4)

ЦВЕТОМ 25% ЯРКОСТИ?

1 SetFillPatern(1,2,4,8,1,2,4,8);

2 SetFillPatern(1,2,4,8,1,2,4,8;4);

3 SetFillPatern(11,22,44,88,11,22,44,88);

4 SetFillPatern(11,22,44,88,11,22,44,88;4);

*

07КАКАЯ ИЗ НИЖЕУКАЗАННЫХ ПРОЦЕДУР УСТАНАВЛИВАЕТ СТАНДАРТНЫЕ

ОБРАЗЦЫ ЗАКРАСКИ И ИХ ЦВЕТА?

1 SetFillStyle(Pattern:word;Color:word);

2 SetFillPatern(Pattern:FillPatternType;Color:Word);

3 GetFillSettings(var FillInfo:FillSettingsType);

4 SetLineStyle(LineStyle:Word;Pattern:Word;Thickness:Word);

*

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

ПАЛИТРЫ НА ДЕВЯТЫЙ, СВЕТЛО-ГОЛУБОЙ?

1 SetAllPalette;

2 SetColor;

3 SetPalette;

4 GetPalette;

*

09НАПИШИТЕ ПРОГРАММУ ЗАМЕНЫ ЦВЕТА НЕИЗВЕСТНОГО СТАНДАРТНОГО СТИЛЯ

ЗАКРАСКИ НА ЦВЕТ X.

1 Color:=X;

SetFillStyle(Pattern,Color);

2 GetFillSettings;

Color:=X;

SetFillStyle(Pattern;Color);

3 GetFillSettings;

Color:=X;

SetFillPattern(Pattern;Color);

4 GetFillSettings;

Color:=X;

SetFillStyle(Color;Pattern);

*

10НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ НА КРАСНОМ(4) ЭКРАНЕ ГОЛУБОГО(9)

ОКНА, ЗАКРАШЕННОГО КЛЕТКОЙ СИНЕГО ЦВЕТА(1).

1 SetBKColor(4);

SetFillStyle(7,1);

Bar(X1,Y1,X2,Y2);

2 SetBKColor(4);

Bar(X1,Y1,X2,Y2);

SetFillStyle(7,1);

Bar(X1,Y1,X2,Y2);

3 SetBKColor(4);

SetFillStyle(1,9);

Bar(X1,Y1,X2,Y2);

SetFillStyle(7,1);

Bar(X1,Y1,X2,Y2);

4 SetFillStyle(9,1);

Bar(X1,Y1,X2,Y2);

SetFillStyle(7,1);

SetBKColor(4);

*

0

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

*

2Ответ неверный. Процедура SetPalette изменяет один из цветов палитры002

*

3Ответ неверный. Процедура SetAllPalette изменяет цвета палитры. 002

*

4Ответ неверный. Процедура SetLineStyle устанавливает стиль 002

контурных линик и их толщину.

*

*

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

*

2Ответ неверный. Процедура SetColor задает цвет рисования. но не 002

закрашивает фигуры.

*

3Ответ неверный. Нет необходимости устанавливать черный цвет, т.к. 003

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

*

4Ответ неверный.На черном экране, установленном процедурой SetBKColor002

будет виден лишь белый контур квадрата.

*

*

031Ответ неверный.Ошибка в написании параметров процедуры SetFillStyle.002

*

2Ответ неверный. Результатом выполенния данного фрагмента будет 002

красный экран.Ошибка в написании параметров процедуры SetFillStyle.

*

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

*

4Ответ неверный. Стиль и цвет закраски необходимо установить до 002

построения фигуры.

*

*

041Ответ неверный. В языке имеется возможность устанавливать 002

произвольный (по желанию пользователя) стиль контурных линий с

помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).

При этом параметр LineStyle устанавливается в значение UserBitLn(4)

а параметр Pattern представляет собой битовую строку, определяющую

стиль изображения кнтурных линий. Возможности установить призволь-

ный цвет рисования нет.

*

2Ответ неверный. В языке имеется возможность устанавливать 002

произвольный (по желанию пользователя) стиль контурных линий с

помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).

При этом параметр LineStyle устанавливается в значение UserBitLn(4)

а параметр Pattern представляет собой битовую строку, определяющую

стиль изображения кнтурных линий. Возможности установить призволь-

ный цвет рисования нет.

*

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

*

4Ответ неверный. В языке имеется возможность устанавливать 002

произвольный (по желанию пользователя) стиль контурных линий с

помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).

При этом параметр LineStyle устанавливается в значение UserBitLn(4)

а параметр Pattern представляет собой битовую строку, определяющую

стиль изображения кнтурных линий. Возможности установить призволь-

ный цвет рисования нет.

*

*

051Ответ неверный. Процедура GetLineStyle не устанавливает стиль 002

контурных линий, а возвращает их текущие параметры.

*

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

* 005

3Ответ неверный. Параметр Pattern не может состоять из одной цифры, 002

т.к. его значение - двухбайтовое число.

*

4Ответ неверный. При установке стандартного стиля контурных линий 002

параметр Pattern не задается.

*

*

061Ответ неверный. Не указан параметр Color и элементы массива Pattern 002

являются двухбайтовыми.

*

2Ответ неверный. Элементы массива Pattern являются двухбайтовыми. 002

*

3Ответ неверный. Не указан параметр Color. 002

*

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

*

*

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

*

2Ответ неправильный. Процедура SetFillPattern позволяет программисту 003

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

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

*

3Ответ неверный. Эта процедура возвращает код и цвет стандартного 002

образца закраски.

*

4Ответ неверный. Процедура SetLineStyle устанавливает стиль контурных002

линий.

*

*

081Ответ неверный. Данный способ замены одного цвета другим допустим, 004

но не рационален.

*

2Ответ неверный. Процедура SetColor устанавливает текущий цвет 002

рисования.

*

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

*

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

цветовой палитре, но не меняет цвета.

*

*

091Ответ неверный. Параметр Color не следует устанавливать предвари- 002

тельно для процедуры SetFillStyle. Процедура SetFillStyle устанав-

ливает стандартный образец закраски и цвет.

*

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

*

3Ответ неверный. Процедура SetFillPattern устанавливает нестандартный002

стиль закраски.

*

4Ответ неверный. Параметры процедуры SetFillStyle следует употреблять003

в обратном порядке.

*

*

101Ответ неверный.Фон прямоугольлника (X1,Y1,X2,Y2) будет красным. 002

*

2Ответ неверный. Прямоугольник (X1,Y1,X2,Y2) будет по умолчанию 002

закрашен белым цветом, а не голубым.

*

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

*

4Ответ неверный. Процедура SetBKColor закрасит экран красным цветом, 002

закрасив прямоугольник.

*

*

0

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

В данном разделе рассматриваются процедуры, позволяющие програм-

мировать изображение криволинейных фигур из класса круговых и эллип-

тических дуг, секторов, а также операторы формирования растровых

изображений и часто используемые вспомогательные процедуры.

* procedure Arc(X,Y:integer;StAngle,EndAngle,Radius:word);

1

Рисует против часовой стрелки текущим

стилем и цветом дугу окружности с центром (X,Y),

радиусом Radius от начального угла StAngle до

конечного угла AndAngle. Угловые параметры

задаются в градусах.

* procedure CetArcCords(var ArcCoords:ArcCoordsType);

Возвращает в переменной ArcCoords координаты концов дуги,

проведенной последней командой Arc.Тип ArcCoordsType описан в

модуле Graph как запись, значения полей которой аналогичны значению

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

* procedure Circle(X,Y:integer;Radius:word);

2

Строит контуры окружности радиуса Radius с

центром (X,Y), заданным ранее цветом и стилем

рисования.

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

* procedure Ellipse (X,Y:integer;

* StAngle,EndAngle,XRadius,YRadius:word);

3

Строит текущим стилем и цветом дугу

эллписа с центром (X,Y), начальным StAngle

и конечным EndAngle углами, двумя полуосями

XRadius и YRadius.

* procedure FloodFill(X,Y,Border:word);

Обеспечивает закраску ограниченной

области, в которую входит точка (X,Y) , по

образцу, установленному предварительно

процедурой SetFillStyle либо SetFillPattern.

Параметр Border определяет код цвета,

ограничивающего закрашиваемую область.

* procedure FillEllipse(X,Y:integer;XRadius, YRadius:word);

Закрашивает область эллипса,используя

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

Значения параметров аналогичны значениям параметров

процедуры Ellipse.

4

5

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

* prosedure PieSlice(X,Y:integer;

* StAngle,EndAngle,Radius:word);

6

Строит и закрашивает круговой сектор

установленным стилем и цветом. Параметры имеют

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

процедуры Arc.

* procedure Sector(X,Y:integer;

* StAngle,EndAngle,XRadius,YRadius:word);

7

Рисует и закрашивает эллиптический сектор,

используя текущие стиль и цвет рисования и зак-

раски. Параметры имеют тот же смысл и тип что

и одноименные параметры процедуры Ellipse.

* procedure Randomize;

Инициализирует встроенный генератор случайных чисел сллучайным

значением, получаемым от системного таймера компьютера. Описана в

модуле System . Число, получаемое в результате работы генератора,

хранится в предописанной переменной RandSeed. Присваивая ей конкрет-

ные значения можно получать каждый раз заданную последовательность

случайных чисел.

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

* function Random(Rande:word):word;

Возвращает случайное число. Переменная Rande должна быть выра-

жением целого типа, а результатом будет случайное число X длиной в

слово в диапазоне 0= # then FuncKey:=False

else

begin

FuncKey:=true;

Ch:=ReadKey

end;

......

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

* procedure SetWriteMode(WriteMode:integer);

Устанавливает режим записи при вычерчивании линий с помощью

процедур формирования прямолинейных изображений (кроме процедуры

Bar3D). Процедура описана в модуле Craph. Параметр может принимать

следующие значения:

CopyPut = 0 - простое замещение - вычерчиваемая линия "затирает" то,

что было на экране.

XORPut = 1 - сложение по mod 2 - обеспечивается комбинирование вы-

водимой линии с экранным изображе-

нием на основе выполнения поточеч-

ной поразрядной операции суммиро-

вания по модулю2.

Важно, что два одинаковых вывода на экран в режиме XORPut при-

ведут сначала к стиранию линии на экране, а затем в восстановлению

исходного экранного изображения.

0

01КАКОВЫ ФУНКЦИИ ПРОЦЕДУРЫ ImageSize?

1 Создание новой динамической переменной.

2 Сохранение в динамической памяти растрового образа заданной

прямоугольной области экрана.

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

области экранного изображения.

4 Вывод в заданное место экрана хранимого в динамической памяти

растрового изображения.

*

02КАКОЕ СУЩЕСТВУЕТ ОГРАНИЧЕНИЕ ПО ПЛОЩАДИ СОХРАНЯЕМЫХ В ДИНАМИЧЕСКОЙ ПАМЯТИ

ОБЛАСТЕЙ ЭКРАНА?

1 Ограничений нет.

2 Не более одного экрана.

3 Не более 1/2 экрана.

4 Не более 1/4 экрана.

*

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

1 Да. С помощью функции MaxAvail.

2 Да. С помощью процедуры GetMem.

3 Нет, не требуется. Размер динамической памяти не ограничен.

4 Да, требуется. Контроль осуществляется с помощью процедуры Dispose.

*

04КАКОГО ЦВЕТА БУДЕТ ВЫВЕДЕНО ИЗОБРАЖЕНИЕ ТОЧКИ НА ЭКРАНЕ, ЕСЛИ ТОЧКУ

КРАСНОГО (4) ЦВЕТА ЗАМЕСТИТЬ С ПОМОЩЬЮ ПРОЦЕДУРЫ Putlmage

(X,Y,p~,XORPut) точкой синего (1) цвета?

1 Черного (0).

2 Светло-бирюзового(11).

3 Красного (4).

4 Малиновый(5).

*

05КАКУЮ ОРГАНИЗАЦИЮ ВИДЕОБУФЕРА ПОДДЕРЖИВАЮТ ЛАБОРАТОРНЫЕ КОМПЬЮТЕРЫ IBM PC

С АДАПТЕРОМ EGA ПРИ ИСПОЛЬЗОВАНИИ ЯЗЫКА TURBO-PASCAL?

1 Одностраничную.

2 Двухстраничную.

3 Трехстраничную.

4 Четырехстраничную.

*

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

КОТОРУЮ НАПРАВЛЯЕТСЯ ПОСЛЕДУЮЩИЙ ГРАФИЧЕСКИЙ ВЫВОД?

1 SetVisualActivePage

2 SetWriteMode

3 Dispose

4 SetActivePage

*

07КАКОВЫ ФУНКЦИИ ПРОЦЕДУРЫ SetWriteMode?

1 Считывание символа с клавиатуры не отображая его на экран.

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

формирования прямолинейных изображений.

3 Устанавливает номер страницы видеобуфера, на которую осуществляется

последующий графический вывод.

4 устанавливает номер визуализируемой страницы видеобуфера.

*

О

011Ответ неверный. Эту функцию осуществляет процедура GetMem. 002

*

2Ответ неверный. Эту функцию осуществляет процедура GetImage. 002

*

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

*

4Ответ неверный. Эту функцию осуществляет процедура PutImage. 002

*

*

021Ответ неверный. Объем памяти, необходимый для сохраненеия области 002

экрана, не должен быть равен или превышать 64К, что соответствует 1/2

площади экрана.

*

2Ответ неверный. Объем памяти, необходимый для сохраненеия области 002

экрана, не должен быть равен или превышать 64К, что соответствует 1/2

площади экрана.

*

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

*

4Ответ неверный. Объем памяти, необходимый для сохраненеия области 002

экрана, не должен быть равен или превышать 64К, что соответствует 1/2

площади экрана.

*

*

031Ответ првильный. Функция MaxAvail возвращает наибольший непрерывный 005

свободный блок, имеющийся в динамической области памяти в текущий момент.

*

2Ответ неверный. Контроль требуется, однако, процедура GetMem 003

выполняет другие функции.

*

3Ответ неверный. Если в динамической области недостаточно места для 002

размещения новой переменной, возникает ошибка времени выполнения программы.

Чтобы этого избежать следует пользоваться функцией MaxAvail, которая

возвращает размер наибольшего непрерывного свободного блока динамической

области памяти.

*

4Ответ неверный. контроль требуется, но с помощью функции MaxAvail. 003

*

*

041Ответ неверный. При использовании в качестве значения параметра 002

BitBlt константы XORPut коды цветов точек складываются по модулю 2:

4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10)

*

2Ответ неверный. При использовании в качестве значения параметра 002

BitBlt константы XORPut коды цветов точек складываются по модулю 2:

4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10)

*

3Ответ неверный. При использовании в качестве значения параметра 002

BitBlt константы XORPut коды цветов точек складываются по модулю 2:

4(10) + 1(10) = 0100(2) + 0001(2) = 0101(2) = 5(10)

*

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

*

*

051Ответ неверный. Эти компьютеры имеют двухстраничную организацию 002

видеобуфера.

*

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

*

3Ответ неверный. Эти компьютеры имеют двухстраничную организацию 002

видеобуфера.

*

4Ответ неверный. Эти компьютеры имеют двухстраничную организацию 002

видеобуфера.

*

*

061Ответ неверный. процедура SetVisualPage задает номер отображаемой на

002 экран дисплейной страницы видеобуфера.

*

2Ответ неверный. Процедура SetWriteMode выполняет другие функции. 002

*

3Ответ неверный. Процедура Dispose выполняет другие функции. 002

*

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

*

*

071Ответ неверный. Процедура SetWriteMode устанавливает режим записи 002

при вычерчивании линий с помощью процедур формирования прямоугольных

изображений.

*

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

*

3Ответ неверный. Процедура SetWriteMode устанавливает режим записи 002

при вычерчивании линий с помощью процедур формирования прямоугольных

изображений.

*

4Ответ неверный. Процедура SetWriteMode устанавливает режим записи 002

при вычерчивании линий с помощью процедур формирования прямоугольных

изображений.

*

*

0

Приложение 3

Экранные формы

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

Основная программа “GRAPHIC”

Модуль RAZDEL1

Модуль RAZDEL3

Модуль RAZDEL2

Модуль RAZDEL5

Модуль RAZDEL7

Модуль RAZDEL4

Модуль RAZDEL6

Процедура RAZDEL10

Процедура RAZDEL20

Процедура RAZDEL30

Процедура RAZDEL40

Процедура RAZDEL50

Процедура RAZDEL60

Процедура RAZDEL70

Начало

Заставка

Windo1

Выбор

режима

Вызов результатов работы

Обработка модулей

Конец

1..7

9

3

5

4

8

начало

Связь с файлом теории

GraphRegim

OKNO

Вывод текста теории

Имеется иллюстрация

Вывод иллюстрации

Очистка экрана

Конец

Раздел с контрольными вопросами

Конец файла

Вывод текста справки

Связь с файлом справок

Имеется иллюстрация

Случайный выбор номеров вопросов

OKNO1

OKNO

Связь с файлом текста вопросов

Вывод текста очередного вопроса

Имеется иллюстрация

Вывод иллюстрации

Введено допустимое число

Вывод иллюстрации

Фиксация результатов

Очистка экрана

Вопрос последний

Страницы: 1, 2, 3, 4, 5, 6, 7


© 2010 Современные рефераты