ПредишенСледващото

Блог → Тайните на Turbo Pascal: текст в графичен режим. част 1

В тази статия, аз ще ви запозная накратко с характеристиките на интерфейси текст програмиране в EGA / VGA, използвани в Turbo Pascal 6.0 на езиковите програми графични режими. Тези, които са запознати с Turbo Pascal, ще бъде много по-лесно да се разбере кода, предоставена в рамките на тази статия, но също така и за провеждане на други езици за програмиране, четене статии могат да бъдат интересни и информативни. Затова нека не се забави влизането, и веднага да пристъпи към разглеждането по същество.

Аз няма да отида в стандартните процедури на GRAPH.TPU текста модул, тяхното подробно описание, всеки може да намери в литературата. Нека само да се отбележи, че появата в този раздел на процедурите се дължи на прозаичен проблема с множество изходни различни текстови съобщения и стандартните процедури OutTextXY OutText, един в същото положение на екрана. Кой не трябва да се избегне налагането на един ред от другата преди всяка обикновен текстов изход, за да изчистите екрана от предишните съобщения. Всичко друго, но когато това се прави често, например при показване на текущите координати на курсора на мишката, а след това винаги има трептене ефект. Причината за възникването му е, че OutTextXY OutText процедури и направи само пикселите на характера, оставяйки непроменена фонови пиксела в матрицата характер. Най-добрият начин за излизане от подобни ситуации - промяна при показване на текст на екрана заедно с пикселите, които съставляват самата характер и пикселите на фона на матрицата характер. В този раздел ще обсъдим как това може да бъде направено.

Символ на екрана се състои в определен ред на пикселите в символ правоъгълна матрица. Той е съставен ред по ред, започвайки от най-горния ред; височината му се определя от броя на редовете в матрицата, и ширината е обикновено 8 пиксела или един байт (дадена процедура се изчисляват от ширината). Графичните изображения на герои, които се съдържат в т.нар описание на характера на маса (TOC). Всеки байт в таблицата е струни битова комбинация от символи, така че всеки един от героите в ТОС съдържа броя байтове, равна на височината на характера. Са символите в последователно на маса, в зависимост от техните ASCII код, ние лесно да се изчисли отклонението от началото на ТОС символ (височина, умножена по кода на героя).

Всеки комплект малко в моделът на битовете показва наличието на пиксел изображение (т.е. пикселите, включени в самия символ) по съответния ред на символа за матрица (виж чертеж -. Попълнен в съответствие със съдържанието на ТОС, размерът на пиксел матрица 8x8 символи).

Тайните Turbo Pascal текст в графичен режим

Unit GrafText;
интерфейс

използва DOS, VC_Graph;
Тип GrfFnt = масив [l..l] на байт;

Var TextForeColor, TextBackColor, TextLogGlb. байт;
SegFontTabde, OfsFontTable. дума;
CharRow. байт;
FontLoaded. булева;
FointsBIOS. байт абсолютен $ 40: $ 85;
GrafFont. ^ GrfFnt;

Строителство ROMFont8x8 - 1;
ROMFontl4x8 - 2;
ROMFontl6x8 - 3;
Russian8x8 - 4;
FileFont - 5;
RussianFont: масив [1..8 * 256] на байт

VSetFonlType (2 ' ");
VSetTextColor (15,9,0);
VOutTextXY (л () 4,25,
"Процедура VSetTextColor (ForeColor, BackColor, TextLog); ');
Защото: = 0 до 15 направи
започвам

VSetTextColor (1,15-I, 0);
VOutTextXY (104,80 + I * 15,
"Процедура VSetTextColor (ForeColor, BackColor, TextLog); ');

readln;
ClearViewPort;
VSetTextColor (15,9,0);
VOutTextXY (104,25,
"Процедура VOutCharXY (CharCode, X, Y, ForeColor, BackColor ');
Защото: = 0 до 15 направи
За J: = 0 до 15 направи
започвам

Възможно е да се подобри способността на процедурите, например тях пренаписване на изходни символи на променливи ширини или да направи четене като растерни на ТОС, те се измества надясно с определен брой пиксели, или за генериране на мастни курсив символи. Всеки от тези варианти ще се повиши ефективността и гъвкавостта на софтуера си характер генератор, но ще усложни изходния код, и в крайна сметка го забави.

Подкрепете проекта - споделете линка, благодаря!