*
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=<X<Rande. Если Rande=<0, Random возвращает 0.
Если параметр функции не задан вовсе, то результатом будет
вещественное число в диапазоне 0=<X<1.
* procedure Delay(Time:word);
Выполняет задержку на заданное число миллисекунд, описана в
модуде Crt.
* function KeyPressed:boolean;
Возвращает значение true, если на клавиатуре нажата
какая-либо символьная клавиша, и false - в противном случае. Описана
в модуле Crt.
* procedure PutPixel(X,Y:integer;Color:word);
Рисует на экране в позиции (X,Y) точку цвета Color. Опивана в
модуле Graph.
* procedure GetPixel(X,Y:integer):word;
Возвращает код цвета заданной точки растра (X,Y).
ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ
В качестве примера использования функции PutPixel продемон-
стрируем возможность формирования "звездного неба" до нажатия любой
символьной клавиши.
.............
Randomize;
repeat
PutPixel(Random(GetMaxX),
Random(GetMaxY),
Red);
Delay(50);
until KeyPressed;
.............
Приведем еще один пример использования процедур и функций,
описанных в данном разделе.На следующем экране Вы можете наблюдать
эллиптическую диаграмму с выделенными секторами различного стиля и
цвета закраски, а также кардиоиду, представленную семейством окруж-
ностей, проходящих через общею точку опорной окружности и с центрами
в концах равных элементов, составляющих опорную окружность. Цвета
элементов опорной окружности и окружностей кардиоиды назнача-
ются случайным образом.
8
9 ПРОГРАММИРОВАНИЕ ЦВEТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ
0
01НАРИСУЙТЕ ПРОГРАММУ РИСОВАНИЯ НА ЖЕЛТОМ(14) ЭКРАНЕ КРИВОЛИНЕЙНОЙ ЦИФРЫ 8 СИНЕГО(1) ЦВЕТА.
1 SetBKColor(14);
SetColor(1);
Circle(X,Y;Radius);
Circle(X,Y+d;Radius+d);
2 SetBKColor(1);
SetColor(14);
Circle(X,Y;Radius);
Circle(X,Y;Radius+d);
3 SetBKColor(14);
SetColor(1);
Arc(X,Y;0,360,Radius);
Arc(X,Y+d;0,360,Radius);
4 SetBKColor(1);
SetColor(14);
Arc(X,Y;0,360,Radius);
Arc(X,Y+d;0,360,Radius);
*
02НАПИШИТЕ ПРОГРАММУ ФОРМИРОВАНИЯ НА ЧЕРНОМ ЭКРАНЕ КРАСНОЙ ЦИФРЫ 5 С КРИВОЛИНЕЙНОЙ НИЖНЕЙ И ПРЯМОЛИНЕЙНОЙ ВЕРХНЕЙ ЧАСТЯМИ.
1 SetColor(4);
GoToXY(X,Y);
Arc(X+d,Y+d,0,180,K+d);
Arc(X,Y+d,0,90,d);
Arc(X+d,Y+d+k,0,180,k);
2 SetColor(4);
Line(X,Y,X+d,Y);
Line(X,Y,X,Y+d);
Arc(X+k,Y+k,0,90,k);
Arc(X+k,Y+k,270,360,k);
3 SetColor(4);
Line(X,Y,X+d,Y);
Line(X,Y,X,Y+d);
Arc(X+k,Y+k,0,180,k);
4 SetColor(4);
Line(X,Y,X-d,Y);
Line(X-d,Y,X-d,Y+d);
Circle(X-d,Y+d+k,k);
*
03НАПИШИТЕ ПРОГРАММУ , ОБЕСПЕЧИВАЮЩУЮ ФОРМИРОВАНИЕ НА ЧЕРНОМ ЭКРАНЕ ЭЛЛИПСА СО СЛУЧАЙНЫМ ЦВЕТОМ ЗАКРАСКИ.
1 Randomize;
SetFillStyle(0,15);
Ellipse(X,Y,0,359,a,b);
FloodFill(X,Y,Random(14);
2 SetFillStyle(0,15);
Ellipse(X,Y,0,359);
FloodFill(X,Y,Random(14);
3 SetFillStyle(0,15);
Randomize(15);
Ellipse(X,Y,0,359,a,b);
FloodFill(X,Y,Random);
4 SetFillStyle(0,15);
Randomize;
Ellipse(X,Y,a,b);
FloodFill(X,Y);
*
04КАК ПРАВИЛЬНО ЗАДАТЬ УГЛОВЫЕ ПАРАМЕТРЫ ПРОЦЕДУРЫ Arc?
1 В радианах. Их значения не должны превышать 2пи.
2 В радианах. Их значения не должны превышать пи.
3 В градусах. Их значения не должны превышать 360 градусов.
4 В градусах. Их значения не должны превышать 180 градусов.
*
05В КАКОМ МОДУЛЕ ОПИСАНА ПРОЦЕДУРА RANDOMIZE?
1 Graph.
2 Crt .
3 Dos.
4 System.
*
06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО НАРИСОВАТЬ НА ЭКРАНЕ ТОЧКУ
ОПРЕДЕЛЕННОГО ЦВЕТА?
1 PutPixel.
2 KeyPressed.
3 GetPixel.
4 Delay.
*
0
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
В данном разделе мы рассмотрим возможность графического изобра-
жения текстовых символов, управление типом шрифта, направлением
вывода, размерами и пропорциями символов, пространственной привязкой
текстовых строк к положению курсора и другими возможностями формиро-
вания графических текстов.
* procedure SetTextStyle(Font,Direction:word;
* CharSize:CharSizeType);
Устанавливает стиль стандартного шрифта Font(один растровый -
DefaultFont(0), и четыре штриховых - TriplexFont(1),SmallFont(2),
SanSerifFont(3), GothicFont(4)), направление текстовой строки
Direction (HorizDir(0) - слева направо, VertDir(1) - снизу вверх),
размер символов CharSize (коэффициент увеличения от 1 до 10).
В случае растрового шрифта каждый текстовый символ формируется
на основе матрицы 8*8 элементов разложения. Штриховые шрифты опреде-
ляются серией векторов. Обычно штриховые шрифты хранятся в отдельных
файлах на системном диске и при обращении к процедуре загружаются в
динамически определяемую память компьютера автоматически.
"По умолчанию", т.е. без обращения к данной процедуре
автоматически устанавливается растровый шрифт, горизонтальный вывод
и единичный размер символов.
На следующем экране Вы можете наблюдать примеры стандартных
шрифтов. После названия каждого из них через запятую указан коэффи-
циент увеличения.
#
1 ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
#
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
* procedure SetUserCharSize(MultX,DivX,MultY,DivY:word);
Используется после установки штрихового шрифта с целью измене-
ния пропорций символов. Отношение MultX/DivX -коэффициент масштаби-
рования обычной ширины используемого архивного штрихового шрифта.
2MultY/DivY - коэффициент масштабирования высоты шрифта.
#
ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ
* function TextHeight(TextString:strig):word;
Возвращает высоту заданной текстовой строки TextString в элемен-
тах изображения(пикселах) с учетом всех установок, выполненных ранее
процедурами SetTextStyle и SetUserCharSize .
* function TextWidth(TextString:string):word;
Возвращает ширину заданной текстовой строки TextString при тех
же условиях, что и функция TextHeight.
* procedure SetTextJustify(Horiz,Vert:word);
Обеспечивает привязку выводимого графического текста к теку-