Текстове на графичния екран на Free Pascal
Придружаването на изображението с обяснителни надписи на графичния екран разширява възможностите на програмата за представяне на резултатите от работата. BGI графиката използва две процедури за тази цел:
Изходящ текст(msg); OutTextXY(x, y, msg);
Изборът на шрифта и височината на неговите главни букви се извършва чрез процедурата SetTextStyle:
SetTextStyle(n_Font, n_Dir, kH);
Първият аргумент указва номера на шрифта от диапазона [0, 10]. Може да бъде дадено или чрез конкретно число, или чрез мнемонична константа (Таблица 15.9).
Шрифт по подразбиране, растерно изображение (8 8)
Три контура, прав, сериф
Единичен байпас, прав, монопространствен
Двоен байпас, прав, монопространствен
Двоен байпас, директен, пропорционален
Триъгълник, курсив, сериф
Вторият аргумент контролира посоката на изобразяване на надписи — хоризонтално (hDir=0 или константа HorizDir) или вертикално (hDir=1 или константа VertrDir). Третият параметър съответства на височината на символа. Трябва да се избере, тъй като за различните шрифтове физическите размери на буквите с една и съща kH стойност може да се различават. Във всеки случай, когато kH нараства от 1 до 10, размерът на буквите се увеличава.
Фиг. 15.12.Шрифт по подразбиране
Фиг. 13.15.Шрифт TypexFont
Шрифтът по подразбиране (фиг. 15.12) е вграден в системния модул и не съдържа български букви. За всички останали шрифтове обаче директорията \FPC\…\bin трябва да съдържа файловете, изброени в Таблица 1. 15.9. Те не са включени в стандартната дистрибуция, но могат да бъдат копирани от всяка по-ранна версия на Turbo Pascal или Borland Pascal. Вярно е, че в този случай няма да имате пълноценни шрифтове, допълнени с българската азбука. За да намерите последното, можете да използватеИнтернет, въпреки че качеството на много "разширени" шрифтове понякога оставя много да се желае - някои нямат буквите "Ё" и "ё", интервалите след отделните знаци не са много внимателно подбрани. Triplex Font е късметлията
(фиг. 15.13). Ръкописният шрифт (фиг. 15.14) не съдържаше буквите "Ё" и "Ъ". Шрифтът Simple Font (фиг. 15.15) е добър за всички, но попада под наскоро приетия закон на Държавната дума "За държавния език на България" по отношение на използването на буквата "Ё".
Фиг. 15.14.Почерк
Фиг. 15.15.Прост шрифт
По подразбиране опорната точка на текста е горният ляв ъгъл на правоъгълника, който граничи с текста (фиг. 15.16 — левият правоъгълник). Тя е малко по-широка от текста поради интервала след последната буква. Долната част на правоъгълника също е малко под основната линия на буквите, поради факта, че някои знаци имат долен индекс (например буквите "g", "q", "p", "y"). Има 9 опции за позициониране на опорната точка на текста спрямо околния правоъгълник. Тези позиции се обозначават с двойка индекси, които определят условни хоризонтални и вертикални отмествания спрямо ъглите на очертания правоъгълник (вижте десния правоъгълник на фиг. 15.16). Чрез указване на вертикално отместване текстът може да бъде изместен нагоре спрямо ограничаващия правоъгълник с 0,5h(вторият индекс е 1) или сh(вторият индекс е 2), къдетоhе височината на главната буква. Съответното ляво хоризонтално отместване на текста е 0,5w(първият индекс е 1) илиw(първият индекс е 2), къдетоwе ширината на текста. По този начин опорната точка на текста може да бъде свързана с лявата граница, със средната му или с дясната граница на текста.
Фиг. 15.16.Избиране на текстова опорна точка
Хоризонталните и вертикалните отмествания на текста спрямо ограничаващия правоъгълник се задават с помощта на процедурата SetTextJustify: SetTextJustify(horiz, vert);
Хоризонталното отместване (horiz) може да бъде 0 (или константата LeftText), 1 (или константата CenterText), или 2 (или константата RightText). Три подобни константи са подготвени за вертикалното отместване (vert) — BottomText, CenterText, TopText.
Ако целочисленият коефициент на мащабиране kH, зададен в процедурата SetTextStyle, едновременно променя височината и ширината на знаците, тогава с помощта на процедурата SetUserCharSize можете да зададете два различни коефициента, които независимо влияят на всяка от тези характеристики. Всеки от тези коефициенти се дава от двойка цели числа — множител и делител:
SetUserCharSize(Multx, Divx, Multy, Divy);
Този метод ви позволява да зададете всеки реален коефициент на преоразмеряване на знаци по една или друга координата, например равен на 3,14 (Mult=314, Div=100).
Сред полезните функции за управление на текстове отбелязваме две - TextWidth и
TextHeight за определяне на ширината и височината на даденото съобщение. Тези стойности могат да помогнат за правилното поставяне на съответното съобщение на графичния екран. По-специално, с тяхна помощ е получено изображение на текст в размерен правоъгълник, показано на фиг. 15.16 (списък 15.10).
Списък 1 5 .1 0 . Програмен текст_1
програмен текст_1; използва Graph; вар
gd:=D8bit; gm:=m800x600; InitGraph(gd,gm,”); SetTextStyle(0,0,10);h:=TextHeight('Ъгъл');
w:=TextWidth('Ъгъл');MoveTo(300,100); кръг (300,100,5);
OutText('Ъгъл'); readln; Затваряне на графиката;
Източник: Кетков, Ю. Л., Свободен софтуер. БЕЗПЛАТЕН PASCAL за студенти и ученици, Ю. Л. Кетков, А. Ю. Кетков. - Санкт Петербург: BHV-Петербург, 2011. - 384 с.: ил. + CD-ROM - (IIIKT)