Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Работа с текстом в графическом режиме
Для вывода на экран текста в графическом режиме используются следующие процедуры: OutText(S); - вывод строки S (типа string) в текущей позиции курсора. OutTextXY(x, y, S); - вывод строки S в позиции с координатами (x, y).
Строку 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) * * * Выравнивание по горизонтали: (0, 0) (1, 0) (2, 0) H = 0 - текст справа от позиции вывода, В скобках указаны значения H, V. H = 1 - центрирование текста, H = 2 - текст слева от позиции вывода.
Выравнивание по вертикали: 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; Begin 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 { смещение по " Y" на высоту буквы " S" } end; 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); Str(Size, S); OutTextXY( GetmaxX div 2, Y, 'Size='+S); Y: = Y + TextHeight('S') + 1; end; Readln; ClearDevice End; CloseGraph End. Практическое задание 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/6 сек., то, быстрая смена кадра (изображения на экране) не замечается человеком. Мультипликация в графическом режиме обеспечивается возможностью запоминать (хранить в ОЗУ) прямоугольные массивы пикселов. Эти массивы можно в дальнейшем выводить в любом месте экрана в нужное время.
|
Последнее изменение этой страницы: 2017-03-17; Просмотров: 389; Нарушение авторского права страницы