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


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




[33]

UZOR(m,n,x,y); Until KeyPressed;

delay(1000);

CloseGraph

UZOR(m,n,x,y) { рисование узора }

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

1.Смоделировать детский калейдоскоп для набора из трех разноцветных "кристаллов" ( 3-х, 4-х и 5-ти угольников), размещенных в одном секторе.

2.Смоделировать калейдоскоп с 8 осями симметрии. Смещая при каждом изменении фигуры на пять пикселов диапазон задания координат "х" точек исходной ломанной (10 раз увеличивая, затем 10 раз уменьшая получить пульсирующее движение фигур.

3.Смоделировать вращение узора, полученного из отражений ломанной линии.

4.Смоделировать случайное перемещение узора, полученного из отражений ломанной линии. Контролировать выход узора за границу экрана.

1. 15. 3. 4. Работа с текстом в графическом режиме

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

вывод строки S (типа string) в текущей позиции курсора. вывод строки S в позиции с координатами (x, y).

OutText(S);

OutTextXY(x,y,S);

Строку S можно определять явно в виде символов, заключенных в апострофы, например, OutText(Sample 1);, или как переменную (константу) типа string. Если требуется вывести значение переменной числового типа, то необходимо приме-нить процедуру ее преобразования в строковый тип. Например: Str(x:10:5,S); - определяем переменную "S" (типа string), полученную преобразованием переменной "x" (вещественного типа) по указанному формату.

Перечислять несколько переменных через запятые (подобно параметрам функций write и writeln) в графических функциях вывода текста не допускается. При выводе нескольких строковых переменных они соединяются знаком "+" , например: OutText(x=+ S);

Для установки стиля вывода текста используется процедура

SetTextStyle(F, D, Z);

где F - номер шрифта, D - направление вывода надписи, Z - увеличение размера относительно базового варианта. Параметры F, D, Z - типа Word.

Шрифт в графическом режиме может создаваться двумя методами. В первом типе шрифта - матричном, берется стандартный шрифтовой набор BIOS ПК, где каждому символу соответствует матрица 8*8 пикселов. Матричный шрифт используется по умолчанию. Изменение размера матричного шрифта производится увеличением исходной матрицы в N-раз: 8N*8N пикселов. При увеличении размера явно проявляется "грубость" матричного шрифта.

Второй тип шрифтов - векторный (штриховой). При этом буквы рисуются как совокупность отрезков, соединяющих узловые точки букв. Качество в этом случае от размера не зависит. Однако вывод текста векторными шрифтами более медленный, чем матричным.


В стандартном наборе BGI определено:

F = 0 (DefaultFont) - 8х8 пикселов - матричный шрифт,

векторные шрифты:

F = 1 (TriplexFont) - триплекс (полужирный),

F = 2 (SmallFont) - уменьшенный,

F = 3 (SansSerifFont) - прямой (книжный),

F = 4 (GothicFont) - готический. Направление шрифта: D= 0 - по горизонтали слева направо,

D= 1 - по вертикали снизу вверх, символы повернуты на 900.

Увеличение размера Z варьируется от 1 до 31 для матричного шрифта и от 1 до 10 для векторных шрифтов. Причем базовый размер соответствует для матричного шрифта Z= 1, для векторного шрифта Z= 4. При Z= 0 базовый размер устанавливается по умолчанию.

Для векторного шрифта, можно изменить его пропорции относительно базового размера процедурой

SetUserCharSize(XN, X, YN, Y);

При этом (XN/X) - множитель для изменения ширины символов, (YN/Y) - множитель для изменения высоты символов. Параметры XN, X, YN, Y - типа Word.

Текст можно выравнивать относительно позиции его вывода с помощью процедуры

(0,2)(1,2)(2,2)

SetTextJustify(H, V);

0,1) * ЦЕНТРИРУЕМЫИ ТЕКСТ* (2,1;

Выравнивание по горизонтали:

H = 0 - текст справа от позиции вывода,

H = 1 - центрирование текста,

H = 2 - текст слева от позиции вывода.

(0,0) (1,0)(2,о;

В скобках указаны значения H, V.

Выравнивание по вертикали:

V= 0 - текст выше позиции вывода,

V= 1 - центрирование текста,

V= 2 - текст ниже позиции вывода.

По умолчанию установлено H= 0, V= 2.

Длину строки S (в пикселах) можно определить функцией TextWidth (S); Высота строки S определяется функцией TextHeight(S);

Если строка не помещается в области экрана, то в случае матричного шрифта эта строка не выводится, а для векторных шрифтов часть строки отсекается.

Цвет текста в графике устанавливается процедурой SetColor(N); где N-номер цвета. { -------- Пример программы, демонстрирующей различные шрифты: --------- }

uses Graph;

var Gd, Gm, k, X, Y, Size: integer; S: string;

Gd:= Detect; InitGraph(Gd, Gm, c:\tp7\bgi);

X:= 0; Y:= 0;{ начальные координаты вывода текста }

for Size:= 1 to 10 do begin k:= 0; { перебор размеров шрифта } SetTextStyle(k,0,Size); Str(Size,S); { пишем матричным шрифтом }


OutTextXY(X, Y, Size= + S);

Y:= Y + TextHeight(S) + 1 {

Readln; ClearDevice; SetTextJustify(1,2); for k:= 1 to 4 do begin

Y:= 0; SetColor(k+8); for Size:=1 to 10 do begin SetTextStyle(k, 0, Size); OutTextXY( GetmaxX div 2, Y:= Y + TextHeight(S) +

Readln; ClearDevice end; CloseGraph

смещение по "Y" на высоту буквы "S" }

{ выравнивание по центру } { пишем векторными шрифтами }

{ перебор размеров шрифта } Str(Size, S); Y, Size=+S);

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

1.Сопоставить матричный шрифт с векторными шрифтами выводом строки "MATRIX" (матричным шрифтом) и строки с названием векторного шрифта (например, "GOTHIC" -при F=4) всеми доступными размерами. Номер размера также должен выводиться.

2.Вывести разными шрифтами и размерами свое имя с указанием значений параметров

"F" и "Z".

Примечание: доступный размер определяется в программе из условия размещения строки с текстом на экране.

3/4. Выполнить п. 1/2 размещая надпись с базовым размером шрифта в рамке. Изменять позиции вывода (выравнивания) строки текста. Изменять пропорции шрифта.

5.Вывести в графическом режиме таблицу функций X, SIN(X), COS(X) для X=0, . . . , PI с шагом PI/10. Таблица должна иметь заголовок и располагаться в рамке. При этом нужно рассчитать размеры шрифта по результатам, возвращаемым функциями TextWidth и TextHeight так, чтобы таблица заняла максимальную область экрана.

6.Выполнить п. 5 для Х= -Pi до Pi с шагом Pi/5.

7.Создать аналог электронного секундомера, выводящего цифры (от 0 до 59) матричным шрифтом большого размера в центре прямоугольника. После задержки текущая цифра перерисовывается цветом фона и подается звуковой сигнал. Секундомер запускается нажатием клавиши Enter.

8.Выполнить п. 7 для векторного шрифта с использованием режима XorPut.

1. 15. 5. Мультипликация

Принцип мультипликации состоит в быстром воспроизведении на экране заранее подготовленных рисунков (картинок). Поскольку зрительные нервы не фиксируют информацию продолжительностью < 1/6 сек., то, быстрая смена кадра (изображения на экране) не замечается человеком.



[стр.Начало] [стр.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]