Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[29]

if i<6 then begin x1:=90*i;

else begin x1:=90*(i-6);

x2:=x1+70; Bar3d(x1, y1, x2, y2, 10, TopOn) end; ReadLn; CloseGraph

y1:=150 end y1:=270 end; y2:=y1+80;

Заполняя не черный экран орнаментом Red 50, можно получить новые цвета фона.

Выбранным из стандартных или определенным орнаментом можно заполнить любую замкнутую область с границей цвета "N" оператором

FloodFill(X, Y, N);

Заполнение начинает производится из точки X, Y и ограничивается при достижении границы цвета с номером "N". Например: Rectangle(x1, y1, x2, y2); FloodFill((x1+x2) div 2, (y1+y2) div 2, Red); Если область не замкнута или цвет границы не равен "N", то заполнение "разольется" по экрану.

Практическое задание 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.

1. 15. 3. 2. Работа с линиями

В графическом режиме курсор невидим, его положение можно определить функциями, возвращающими значения координат:

по оси "Х",

по оси "Y".

Следующие процедуры перемещают курсор без рисования:


MoveTo(x, y); MoveRel(dx,dy);

-переместить курсор в точку с координатами (x, y),

-сместить курсор на расстояние dx, dy от текущего положения.

Для построения многоугольников и ломаных линий удобно использовать процедуры:

LineTo(x, y);

LineRel(dX, dY);

провести отрезок прямой линии от текущего положения курсора до точки с координатами X, Y. провести отрезок прямой линии от текущего положения курсора до точки, смещенной на расстояние 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 * y[i]:= yc + round(R *

cos(alfa)) sin(alfa))

{ значение угла в рад. } { координаты вершин }

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;

Практическое задание N 1. 55

1. Составить процедуру рисования N - угольной звезды. В параметры процедуры включить число лучей звезды, радиусы вписанной и описанной окружностей, цвет линий и координаты центра звезды. Перемещать две звезды разного цвета в пределах экрана случайным образом.

2. Составить процедуру рисования N - угольной звезды, где N= 3, 5, 7, ... Операторы рисования имеют вид:

M:=N div 2; Moveto(x[1],y[1]); For i:=1 to N do begin j:=(M*i) mod N + 1;

LineTo(x[j],y[j])end;

Перемещать две звезды разного цвета в пределах экрана. Толщину и форму (стиль) линий отрезков прямых, прямоугольников, окружностей, эллипсов можно задать оператором

SetLineStyle(F, P, T);

Здесь F - форма линии из стандартного набора BGI:

F=0 - сплошная,

F=1 - пунктирная,

F=2 - штрих-пунктирная,

F=3 - штриховая.

F=4 - форма линии задается параметром Р. При F<4 значение Р игнорируется. Параметры F, P, T типа Word.

Стиль линии Р - число, двоичное представление которого отображает заполнение линии длиной 16 пикселов. Если разряд числа равен 1, то пиксел высвечивается, 0 - не высвечивается. Удобно использовать шестнадцатеричные числа. Например:

P = $35F1 = 0 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 ( двоичное ) отобразит стиль:

Можно использовать десятичную форму записи значения параметра "Р",

где 0<= P <= 65535= 216- 1 .

T - толщина линии может принимать два значения: T= 1 - тонкая (1 пиксел), T= 3 - толстая (3 пиксела).

Например, операторы: SetLineStyle(4, $5555, 3); Line(x1, y1, x2, y2); определяют толстую мелким пунктиром линию.

Практическое задание N 1. 55

1. Вывести на экран горизонтальные толстые линии с двоичным представлением:



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51] [стр.52] [стр.53]