Реферат: Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.x
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=<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);
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
|