Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anonymous/9f14dcba7353f037e2f09668dddae8cf to your computer and use it in GitHub Desktop.
Save anonymous/9f14dcba7353f037e2f09668dddae8cf to your computer and use it in GitHub Desktop.
Простое форматирование текста

Простое форматирование текста



Ссылка на файл: >>>>>> http://file-portal.ru/Простое форматирование текста/


Простейшее форматирование текста
Форматирование текста. Правила и приемы форматирования. Управление плотностью текста.
Это заголовок первого уровня
























Если последний параметр имеет значение FALSE, то функция EzCreateFont использует эти значения для получения разрешающей способности устройств в точках на дюйм. Здесь возможны два варианта. Вы можете получить разрешение устройства в точках на дюйм непосредственно, используя параметры LOGPIXELSX и LOGPIXELSY в функции GetDeviceCaps. Это называется "логическим разрешением" logical resolution устройства. Для печатающих устройств нормальное разрешение и логическое разрешение одинаковы отбрасывая ошибки округления. Для дисплеев, однако, логическое разрешение лучше, чем нормальное разрешение. Например, для VGA наилучшим значением нормального разрешения является примерно 68 точек на дюйм. В то время, как логическое разрешение — 96 точек на дюйм. Это различие, можно сказать, драматическое. Предположив, что нормальное разрешение равно 68 точкам на дюйм, полная высота символов будет около 11 пикселей. При логическом разрешении 96 точек на дюйм эта величина будет 16 пикселей. Чем объясняется такая разница? Если немного задуматься над этим, то на самом деле не существует истинного разрешения VGA. Стандартный VGA показывает пикселей по горизонтали и пикселей по вертикали, но размер экрана реального компьютера может быть различным — от маленького в компьютерах notebook до большого в VGA — проекторах. Windows не имеет способа самостоятельно определить действительный размер экрана. Значения HORZSIZE и VERTSIZE основаны на стандартных размерах настольных desktop дисплеев VGA, которые могли быть установлены для каких-нибудь ранних моделей IBM году в путем простого измерения линейкой экрана каким-то программистом Microsoft. Если же рассмотреть этот вопрос еще глубже, то в действительности вам и не нужно, чтобы шрифты были отображены на экране в их истинном размере. Нет сомнений, что ваша аудитория будет в замешательстве. Люди, постоянно работающие с текстами, часто используют текстовые процессоры и настольные издательские системы. Многие дисплеи VGA шире, чем 8 дюймов. Отображение на экране более крупных символов предпочтительнее, чем изображение в реальных размерах на экране. Однако, если вы используете логическое разрешение шрифта, то могут возникнуть проблемы при совмещении текста и другой графики. Если вы используете функцию SetMapMode для рисования графики в дюймах или миллиметрах и одновременно логическое разрешение устройства для установки размера шрифта, то вы придете к несоответствию — не при выводе на принтере т. Решение этой проблемы будет продемонстрировано далее в этой главе в программе JUSTIFY1. Структура LOGFONT, которую вы передаете функции CreateFontIndirect , требует задания высоты шрифта в логических единицах. Однажды получив это значение в пикселях, вы легко преобразуете его в логические единицы посредством вызова функции DPtoLP device point to logical point, точка устройства в логическую точку. Но для того чтобы преобразование DPtoLP выполнялось правильно, должен быть установлен тот же режим отображения mapping mode , с каким вы далее будете работать при отображении текста на экране, используя созданный шрифт. Это значит, что вы должны установить режим отображения до того, как будете вызывать функцию EzCreateFont. В большинстве случаев вы используете только один режим отображения для рисования в конкретной области окна, так что выполнение этого требования не является проблемой. Разобравшись с файлами EZFONT, наступило время потренироваться в форматировании текста. Процесс форматирования заключается в расположении каждой строки текста в пределах установленных полей одним из четырех способов: Например, вы не можете определить, какую часть текста функция DrawText сможет разместить в прямоугольнике вывода. Функция DrawText удобна для некоторых простых задач, но для более сложных задач форматирования вы, вероятно, захотите применить функцию TextOut. Одной из наиболее часто используемых функций работы с текстом является функция GetTextExtentPoint Это функция, имя которой претерпело некоторые изменения со времени более ранних версий Windows. Эта функция дает значения ширины и высоты строки символов, основываясь на текущем шрифте, выбранном в контексте устройства:. Ширина и высота текста в логических единицах возвращается в поля cx и cy структуры SIZE. Начнем с примера, использующего одну строку текста. Предположим, что вы выбрали шрифт в контексте устройства и теперь хотите вывести текст:. Вам нужно, чтобы текст начинался в позиции с вертикальной координатой yStart и находился между границами, установленными координатами xLeft и xRight. Ваша задача заключается в том, чтобы вычислить значение xStart горизонтальной координаты начала текста. Эта задача была бы значительно проще, если бы текст отображался с использованием шрифта фиксированной ширины, но это не является общим случаем. Сначала определим длину строки текста:. Предположим, что строка все же помещается. Для того, чтобы выровнять текст влево, нужно просто установить значение xStart равным xLeft и затем вывести текст:. Теперь вы можете прибавить значение size. Чтобы выровнять текст вправо, воспользуемся для вычисления xStart следующей формулой:. Чтобы выровнять текст по центру между левой и правой границами используем другую формулу:. Теперь перед нами самая трудная задача — выровнять текст по всей ширине между левой и правой границами. Расстояние между ними вычисляется как xRight — xLeft. Без растягивания по ширине текст имеет ширину size. Разница между этими двумя величинами:. На первый взгляд это кажется труднейшей задачей, но на самом деле это не так уж и трудно. Чтобы сделать это, вы вызываете функцию:. Второй параметр — это величина пробела, который должен быть распределен поровну между тремя символами пробела в символьной строке. Третий параметр — число символов пробела в строке, в нашем примере — 3. Теперь установим значение xStart равным xLeft и выведем текст с помощью функции TextOut:. Текст будет выровнен по всей ширине между границами xLeft и xRight. При каждом вызове функции SetTextJustification накапливается погрешность, если величина добавляемого пропуска не делится нацело на число символов пробела. Эта ошибка будет влиять на последующие вызовы функции GetTextExtent. Каждый раз перед тем, как начинать вывод новой строки, вы должны сбросить эту погрешность с помощью вызова функции:. Если вы работаете с целым абзацем, вы должны просматривать всю строку от начала, отыскивая символы пробела. Каждый раз, как вы встречаете символ пробела, вы вызываете функцию GettextExtentPoint32 , чтобы определить, умещается ли текст по ширине между левой и правой границами. Когда текст не укладывается в отведенное для него пространство, вы возвращаетесь на один шаг назад к предыдущему найденному символу пробела. Теперь у вас есть законченная строка символов. Если вы хотите выровнять текст по ширине, то нужно вызвать функции SetTextJustification и TextOut , избавиться от ошибки и перейти к следующей строке. Программа JUSTIFY1, приведенная на рис. Программа использует встроенный шрифт Times New Roman размера 15 пунктов, но вы можете изменить его в функции MyCreateFont , описанной в начале программы, и перекомпилировать саму программу. Вы также можете изменить тип выравнивания, используя определение в начале программы. Some years ago -- never mind " "how long precisely -- having little or no money " "in my purse, and nothing particular to interest " "me on shore, I thought I would sail about a " "little and see the watery part of the world. It " "is a way I have of driving off the spleen, and " "regulating the circulation. This is my substitute for " "pistol and ball. With a philosophical flourish " "Cato throws himself upon his sword; I quietly " "take to the ship. There is nothing surprising " "in this. If they but knew it, almost all men in " "their degree, some time or other, cherish very " "nearly the same feelings towards the ocean with " "me. Программа JUSTIFY1 выводит на экран линейки в логических дюймах, конечно вдоль верхнего края и вдоль левого края рабочей области. Функция DrawRuler рисует линейки. Структура прямоугольника определяет область, в которой может быть расположен текст. Основная работа заключается в форматировании заданного в программе JUSTIFY1 текста. Выполнение программы JUSTIFY1 начинается с поиска всех символов пробела от начала текста. При помощи функции GetTextExtentPoint32 измеряется длина каждой строки. Когда длина строки превышает ширину области вывода, программа JUSTIFY1 возвращается к предыдущему символу пробела и заканчивает строку в этой позиции. В зависимости от значения константы ALIGN строка выравнивается влево, выравнивается вправо, выравнивается по центру или выравнивается по ширине. Эта программа не является совершенной. В частности, выравнивание по ширине логически бессмысленно, когда в каждой строке меньше, чем два слова. Но даже если мы решим этот вопрос что не особенно сложно , программа все еще не будет работать как следует, если одно слово будет слишком длинным, чтобы уместиться между заданными полями. Конечно, ситуация может стать более сложной, если вы работаете с программами, использующими несколько шрифтов в одной строке как с кажущейся легкостью делают это текстовые процессоры в Windows. Но никто никогда и не требовал, чтобы это было легко. Это проще только по сравнению с самостоятельным выполнением той же работы. FAQ Обратная связь Вопросы и предложения. Studfiles2 Опубликованный материал нарушает ваши авторские права? Уфимский Государственный Авиационный Технический Университет. Программирование для Windows 95 [12]. Форматирование простого текста Разобравшись с файлами EZFONT, наступило время потренироваться в форматировании текста. Эта функция дает значения ширины и высоты строки символов, основываясь на текущем шрифте, выбранном в контексте устройства: MAK make file justify1. Соседние файлы в предмете Операционные системы Программирование для Windows 95 [22]. EzCreateFont hdc, "Times New Roman", , 0, 0, TRUE.


Можно ли вызвать скорую без
Как изобразить резьбуна чертеже
Чем намазать ожог в домашних условиях ребенку
4.1. Что такое форматирование
Эжвинская детская поликлиника расписание врачей
Получить рецензию на статью
Стихи никитина короткие
Форматирование простого текста
Квалификационные тесты по педиатрии
Виктор суворов последние статьи
HTML - Урок 3. Форматирование текста
Тмтб 3 описание типа
Обозначения земля воздух
Ворд как писать после таблицы
HTML - Урок 3. Форматирование текста
Стихи с я маршака для 3 класса
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment