Робота з текстом у - графічному режимі
Для виведення на екран тексту у графічному режимі використовуються такі процедури:
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 - по вертикалі знизу нагору, символи повернені на 90 0 .
Збільшення розміру 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,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 – номер кольору.
var Gd, Gm, k, X, Y, Size: integer; S: string;
Gd: = Detect; InitGraph(Gd, Gm, 'c: tp7 bgi');
for Size:= 1 to 10 do begin k:= 0;
OutTextXY(X, Y, 'Size=' + S);
for k:= 1 to 4 do begin
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;