Практическое задание 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; просмотров: 1367;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.