Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
21 ошибка прогр... 64529
Реклама
Сейчас на сайте
Гостей: 2
На сайте нет зарегистрированных пользователей

Пользователей: 13,136
новичок: Happy
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование ЭВМ на GPSS (три класса заданий) + Пояснительная записка
моделирование процесса поступления заявок в ЭВМ на GPSS + Пояснительная ...
Лабораторная работа по динамическим спискам на Turbo Pascal (перемещение...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Процедура SetTextStyle - устанавливает стиль текстового вывода на графический экран
Заголовок:
Procedure SetTextStyle(Font,Direct,Size: Word);
Здесь Font - код (номер) шрифта; Direct - код направления; Size - код размера шрифта.
Для указания кода шрифта можно использовать следующие предварительно определенные константы:
const
DefaultFont = 0;{Точечный шрифт 8x8}
TriplexFont = 1;{Утроенный шрифт TRIP.CHR}
SmallFont = 2;{Уменьшенный шрифт LITT.CHR}
SansSerifFont = 3;{Прямой шрифт SANS.CHR}
GothicFont = 4;{Готический шрифт GOTH.CHR}



Замечу, что эти константы определяют все шрифты для версий 4.0, 5.0, 5.5 и 6.0. В версии 7.0 набор шрифтов значительно расширен, однако для новых шрифтов не предусмотрены соответствующие мнемонические константы. В этой версии помимо перечисленных Вы можете при обращении к SetTextStyle использовать такие номера шрифтов:
Процедура SetTextStyle - устанавливает стиль текстового вывода на графический экран
Шрифт DefaultFont входит в модуль Graph и доступен в любой момент. Это -единственный матричный шрифт, т.е. его символы создаются из матриц 8x8 пикселей. Все остальные шрифты - векторные: их элементы формируются как совокупность векторов (штрихов), характеризующихся направлением и размером. Векторные шрифты отличаются более богатыми изобразительными возможностями, но главная их особенность заключается в легкости изменения размеров без существенного ухудшения качества изображения. Каждый из этих шрифтов размещается в отдельном дисковом файле. Если Вы собираетесь использовать какой-либо векторный шрифт, соответствующий файл должен находиться в Вашем каталоге, в противном случае вызов этого шрифта игнорируется и подключается стандартный.
Замечу, что шрифт DefaultFont создается графическим драйвером в момент инициации графики на основании анализа текстового шрифта. Поэтому, если Ваш ПК способен выводить кириллицу в текстовом режиме, Вы сможете с помощью этого шрифта выводить русскоязычные сообщения и в графическом режиме. В остальных шрифтах эта возможность появляется только после их модификации.
Для задания направления выдачи текста можно использовать константы:
const
HorizDir = 0;{Слева направо}
VertDir = 1;{Снизу вверх}



Как видим, стандартные процедуры OutText и OutTextXY способны выводить сообщения лишь в двух возможных направлениях - слева направо или снизу вверх. Зная структуру векторных шрифтов, нетрудно построить собственные процедуры вывода, способные выводить сообщения в любом направлении.
Каждый шрифт способен десятикратно изменять свои размеры. Размер выводимых символов кодируется параметром Size, который может иметь значение в диапазоне от 1 до 10 (точечный шрифт - в диапазоне от 1 до 32). Если значение параметра равно 0. устанавливается размер 1, если больше 10 - размер 10. Минимальный размер шрифта. при котором еще отчетливо различаются все его детали, равен 4 (для точечного шрифта - 1).
Следующая программа демонстрирует различные шрифты. Их размер выбран так. чтобы строки имели приблизительно одинаковую высоту. Перед исполнением программы скопируйте все шрифтовые файлы с расширением .CHR в текущий каталог.
Uses Graph, CRT;
const
FontNames: array [1..10] of String[4] =
( 'TRIP' , 'LITT'' SANS ' , ' GOTH ' , 'SCRI ' , ' SIMP ' ,'TSCR ' , ' LOOM ' , ' EURO',' BOLD ' );
Tabl = 50;
Tab2 = 150;
Tab3 =220;
var
d, r, Err,{Переменные для инициации графики}
Y,dY,{Ордината вывода и ее приращение}
Size,{Размер символов}
MaxFont,{Максимальный номер шрифта}
k: Integer;{Номер шрифта}
NT, SizeT, SynibT: String;{Строки вывода}
c: Char;
{-------------------}
Procedure OutTextWithTab ( S1, S2, S3, S4: String);
{Выводит строки S1..S4 с учетом позиций табуляции Таb1..ТаbЗ}
begin
MoveTo( (Tab1-TextWidth(Sl) ) div2,Y);
OutText (S1) ;
MoveTo(Tabl+(Tab2-Tabl-TextWidth(S2)) div2,Y);
OutText (S2) ;
MoveTo(Tab2+(Tab3-Tab2-TextWidth(S3)) div 2,Y);
OutText(S3);
if S4='Symbols' then {Заголовок колонки Symbols}
MoveTo((Tab3+GetMaxX-TextWidth(S4)) div 2,Y)
else {Остальные строки}
MoveTo(Tab3+3,Y);
OutText(S4)
end;
{------------}
begin
{Инициируем графику}
InitGraph(d,r, ' ');
Err := GraphResult; if ErrogrOk then
WriteLn(GraphErrorMsg(Err))
else
begin
{Определяем количество шрифтов:}
{$IFDEF VER70'}
MaxFont := 10; .
{$ELSE}
MaxFont := 4;
{$ENDIF}
SetTextStyle(l,0,4);
Y := 0;
OutTextWi thTab('N','Name',Size','Symbols');
{Определяем высоту Y линии заголовка}
Y := 4*TextHeight('Z') div3;
Line(0,Y,GetMaxX,Y) ;
{Определяем начало Y таблицы и высоту dY каждой строки}
Y := 3*TextHeight('Z') div 2;
dY := (GetMaxY-Y) div (MaxFont);
{Готовим строку символов}
SymbT := '';
for с := 'a' to 'z' do
SymbT := SymbT+c;
{Цикл вывода строк таблицы}
for k := 1 to MaxFont do
begin
Size := 0;
{Увеличиваем размер до тех пор, пока высота строки не станет приблизительно равна dY}
repeat
inc(Size);
SetTextStyle(k,0,Size+1);
until (TextHeight('Z')>=dY) or (Size=10)
or (Textwidth(FontNames[k])>(Tab2-Tab1));
{Готовим номер NT и размер SizeT шрифта}
Str(k,NT);
Str(Size,SizeT);
{Выводим строку таблицы}
SetTextStyle(k,HorizDir,Size);
OutTextWithTab(NT,FontNames[k],SizeT,SymbT);
inc(Y,dY)
end;
{Рисуем линии рамки}
Rectangle(0,0,GetMaxX,GetMaxY);
Line(Tab1,0,Tabl,GetMaxY);
Line(Tab2,0,Tab2,GetMaxY);
Line(Tab3,0,ТаЬЗ,GetMaxY);
{Ждем инициативы пользователя}
ReadLn;
CloseGraph
end
end.


Опубликовал Kest Июнь 01 2010 18:17:59 · 0 Комментариев · 9042 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Панель Наша Кнопка
Web Регистрация
Эффект лампы на р...
Нестандартные при...
DelphiX
Панель "ссылки"
Задача о 8ми ладьях
Plasma
DiskInfo
Preview
База для Allsubmi...
Применение жадног...
Cooltray
AntiRus
Правила программи...
Delphi World 6.0
PHP: обучение на ...
Обучение Borland ...
DiZsubmit
CABfiles

Топ загрузок
Приложение Клие... 100589
Delphi 7 Enterp... 94109
Converter AMR<-... 20134
GPSS World Stud... 16192
Borland C++Buil... 13541
Borland Delphi ... 9519
Turbo Pascal fo... 7157
Калькулятор [Ис... 5377
Visual Studio 2... 5064
FreeSMS v1.3.1 3582
Случайные статьи
последний месяц, п...
После неудачи с 12...
Автоматическая игр...
Каждый DNS-сервер ...
Моделирование случ...
Обеспечение обратн...
Датчики приближения
Кнопка с рисунком
Решения к главе 12
Приведем графическ...
Как обеспечить сов...
Глава 21. Жизне...
Еще один пример ас...
5.1.2. Ввод термов
Этап 7: выполните ...
Вы используете кли...
поддержка распреде...
Эффективное исполь...
Unit expected
NetWare BinderyАут...
Добавление изображ...
NonPOD-типы
КЛАССЫ С ДИНАМИЧЕС...
Подготовка програм...
Аутсайдер в обществе
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?