Практическое задание N 1. 54
1. С использованием оператора цикла нарисовать на экране 12 одинаковых заполненных различными стандартными орнаментами фигур ( в 3 ряда по 4 фигуры). По нажатию клавиши должен меняться вариант фигуры:
1. 1 Прямоугольник, 2. 1 Эллипс,
1. 2 Параллелепипед. 2. 2 Круг.
Выполнить задание с использованием процедур рисования фигур без автоматического заполнения, а затем заполнить их.
2. Нарисовать 5 вложенных прямоугольников с увеличением размера на 20 пикселов в каждом направлении. Стиль заполнения для каждой фигуры определить буквами Вашего имени.
3. Нарисовать 5 соосных кругов разного цвета с уменьшением радиуса на 10 пикселов. Стиль заполнения для каждого круга определить его номером, т. е. цифрами 1, 2, 3, 4, 5.
4. Определить три орнамента заполнения: "снежинка", "иголки" с наклоном влево и вправо. Нарисовать из треугольников пять елок и заполнить их орнаментом "иголки". Заполнить экран орнаментом "снежинка".
5. Создать элемент орнамента с единицами (4*4) в центре. Нарисовать на экране картину "ночной город", используя фрагменты "звездного неба" и пять прямоугольников, заполненных орнаментом 4*4 разного цвета.
6. Используя исходные орнаменты из одной линии составить с использованием логических операций орнаменты цифр: 1, 6, 7 и букв: B, F, E.
Работа с линиями
В графическом режиме курсор невидим, его положение можно определить функциями, возвращающими значения координат:
GetX;- по оси "Х", GetY; - по оси "Y".
Следующие процедуры перемещают курсор без рисования:
MoveTo(x, y);- переместить курсор в точку с координатами (x, y),
MoveRel(dx,dy);- сместить курсорна расстояние dx, dy от текущего положения.
Для построения многоугольников и ломаных линий удобно использовать процедуры:
LineTo(x, y); - провести отрезок прямой линииот текущего положения
курсора до точки с координатами X, Y.
LineRel(dX, dY);- провести отрезок прямой линии от текущего положения
курсора до точки, смещенной на расстояние dX, dY по
соответствующим осям.
В отличие от процедуры Line(x1, y1, x2, y2);процедуры LineTo(x, y); и LineRel(dX, dY);при своем исполнении перемещают текущий указатель.
Пример операторов для построения восьмиугольника:
R:=100; { расстояние от вершин до центра xc, yc }
xc:= GetMaxX div 2; yc:= GetMaxY div 2;
for i:= 1 to 8 do begin alfa:= i * pi/4;{ значение угла в рад. }
x[i]:= xc + round(R * cos(alfa));{ координаты вершин }
y[i]:= yc + round(R * sin(alfa))
end;
MoveTo(x[8], y[8]);{ исходная позиция для рисования }
for i:= 1 to 8 do LineTo(x[i], y[i]);{ рисование линий }
Для отрезков прямых линий и процедур с их использованием можно задать режимы построения прямых линий оператором:
SetWriteMode(N);
N=0 - замещение линией изображения на экране ( режим CopyPut ) используется по умолчанию,
N=1 - изображение комбинируется ( режимXorPut). Работа функции состоит в изменении согласно логической операции "исключающее ИЛИ" исходного значения цвета пиксела (числа "1" или "0"). Логическая функция Xor, примененная к одной переменной дважды, восстанавливает ее исходное значение:( J xor I ) xor I = J. Следовательно при повторном проведении линии в режиме XorPut изображение этой линии уничтожается, а цвет пикселов экрана становится исходным. На этом правиле основаны некоторые программы построения движущихся изображений.
Пример операторов для рисования движущегося прямоугольника:
SetWriteMode(1);
a:= 100; b:= 50;{ стороны прямоугольника }
x1:= 0; y1:= GetMaxY div 2;
N:= GetMaxX - x1 - a;{ N - число перемещений }
for i:= 0 to N do begin
Rectangle(x1+i, y1, x1+a+i, y1+b); { рисование прямоугольника }
delay(10); Rectangle(x1+i,y1,x1+a+i,y1+b);{ стирание прямоугольника }
end;
Дата добавления: 2016-06-29; просмотров: 1357;