49530 (597452), страница 2

Файл №597452 49530 (Вывод текста) 2 страница49530 (597452) страница 22016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

BOOL GrayString( hDC, hBrush, lpfnDraw, lParam, cChars, nX, nY, nWidth, nHeight );

текст выводится черным цветом в промежуточный контекст устройства, ассоциированный с белым битмапом

выполняется операция OR между выведенным текстом и кистью, состоящей из черных и белых точек в шахматном порядке (Функция PatBlt(), ROP код равен 0xFA0089 (DPo))

полученный битмап переносится на контекст-приемник изображения с помощью операции BitBlt() с ROP–кодом 0xB8074A (PSDPxax), реализующей следующие действия:

( ( destination ^ pattern ) & source ) ^ pattern

в результате все пикселы контекста–приемника, соответствующие белым пикселам созданного битмапа, остаются неизмененными, а все пикселы, соответствующие черным пикселам битмапа, оказываются закрашены кистью, заданной параметром hBrush в вызове функции GrayString().

Остальные параметры этой функции:

hDC - контекст-приемник изображения;

lpfnDraw - функция, осуществляющая вывод текста в промежуточный контекст устройства. Если этот параметр NULL, то используется TextOut(), иначе Вы должны передать адрес связанной с вашим приложением функции (см. процедуру MakeProcInstance() ), имеющей следующий вид:

BOOL CALLBACK GrayStringProc( hDC, lpParam, cChars ) {

// drawing text

return 1;}

параметры lParam и cChars передаются из функции GrayString(); hDC указывает промежуточный контекст устройства. Вывод надо осуществлять начиная с позиции 0,0;

Функция должна вернуть не 0, если все в порядке. Значение 0 указывает на ошибку и приводит к завершению работы функции GrayString().

lParam - если параметр lpfnDraw равен NULL, то lParam является дальним указателем на выводимую строку символов, иначе это может быть любое значение, используемое функцией GrayStringProc();

cChars - число символов в выводимой строке;

nX и nY - позиция для вывода

nWidth - размеры создаваемого промежуточного битмапа, который будет nHeight - принимать строку.

Некоторые особенности применения функции GrayString():

контекст-приемник изображения должен использовать координаты MM_TEXT

атрибуты контекста–приемника НЕ копируются в промежуточный контекст устройства, он использует значения атрибутов по умолчанию;

если cChars равно 0, то GrayString() предполагает, что lParam является указателем на asciiz строку (оканчивающаяся нулевым байтом) и вычисляет ее длину

если nWidth и nHeight равны 0, то GrayString() будет сам вычислять размеры битмапа для строки, указанной параметрами lParam и cChars

большинство современных адаптеров позволяют отображать достаточное число оттенков серого для вывода серых строк. Вы можете проверить, какой метод надо использовать (GrayString() или TextOut() с серым цветом текста), воспользовавшись функцией

rgbGrayText= GetSysColor( COLOR_GRAYTEXT );

если rgbGrayText равно 0 (черный цвет), то Вы должны использовать функцию GrayString(), иначе Вы можете установить серый цвет и воспользоваться функцией TextOut():

SetTextColor( hDC, rgbGrayText ); ...

Шрифты

После изучения основных средств работы с текстом мы перейдем к изучению шрифтов. Для того, что бы дальнейший материал был более понятным, нам надо разобраться с основами классификации шрифтов в Windows. При рассмотрении данной классификации следует иметь в виду ее условность и неизбежное применение типографических терминов. В настоящее время не существует общепринятой системы классификации шрифтов, более того многие термины трактуются совершенно различным образом в разных системах классификации. (Так, например, italic может обозначать наклонный шрифт, наклонный курсив или узкий шрифт, у которого горизонтальные штрихи толще вертикальных).

Все шрифты в Windows могут быть разделены на две группы:

шрифты устройства

шрифты GDI

Со шрифтами устройств мы разбираться не будем, так как это очень специфичные шрифты и их свойства жестко определены возможностями аппаратуры. Основное внимание мы сосредоточим на шрифтах GDI.

Классификация шрифтов GDI

Для шрифтов GDI может быть выделено несколько классифицирующих признаков, определяющих особенности шрифта.

по наклону символов:

Обычно типы Slanted и Italic между собой не разделяют, как правило применяется термин Italic для обозначения всякого наклонного шрифта.

по ширине отдельных символов:

Все символы моноширинного шрифта имеют одинаковую ширину и одинаковые интервалы между символами (как, например, шрифт пишущей машинки). Символы пропорционального шрифта могут иметь различную ширину и даже различные интервалы между символами.

По ширине линии, используемой для отображения символа:

В иных системах классификации эту характеристику иногда заменяют на количественное отношение ширины горизонтальных линий к ширине вертикальных. Такая характеристика называется контрастностью шрифта. Fixed Stroke шрифты имеют контрастность 1:1, нормальная контрастность соответствует 4:5, средний контраст - 1:2 и т.д.

По оформлению символов:

Этот признак тоже может быть представлен более широко, так как оформление засечек чрезвычайно различно - они могут быть перпендикулярны штрихам, соединяться с ними под значительными углами, по-разному сопрягаться с штрихом (со скруглением или без), иметь различную форму.

по “жирности” символов:

Этот критерий называют также “весом” символов, при этом говорят об особо легких, легких, нормальных и пр. шрифтах. Оценивают его по среднему количеству закрашенных (черных) точек в одной строке, длиной 1000 точек. Типичными значениями являются 400 (нормальный шрифт) и 700 или 800 (жирный шрифт) по размеру символов. Размер определяется высотой символа, выраженной в точках. Так, например, говорят о шрифте высотой 12 точек. С точки зрения типографии наиболее применимые шрифты 8-10 точек, шрифты 6 и меньше точек считаются мелкими, 12 и более, крупными.

При отображении на дисплее этими размерами следует пользоваться очень осторожно, так как вертикальное разрешение экрана явно недостаточно для качественного изображения применяемых размеров шрифта (6-10 точек).

По этой причине для дисплеев предусмотрена специальная характеристика, называемая “логический дюйм”. Как правило один логический дюйм соответствует примерно 1.4-1.5 обыкновенного. При использовании логического дюйма вместо нормального изображения всех объектов увеличиваются, что несколько компенсирует низкую разрешающую способность экрана.

Когда мы рассматривали системы координат устройства, то мы отмечали систему MM_TWIPS, в которой одной единице соответствует 1/20 часть точки (1/1440 дюйма). Эта система активно применяется при работе с принтером. Однако при работе с экраном эта система становиться менее удобной, так как удобнее было бы применять логический дюйм вместо физического. Для этого нам придется самим спроектировать требуемую систему координат:

// установим систему координат с несбалансированными

// масштабными коэффициентами по осям

SetMapMode( hDC, MM_ANISOTROPIC );

// в одном логическом дюйме должно быть, как и в обычном, 1440 точек

// поэтому 1440 логическим единицам

SetWindowExt( hDC, 1440, 1440 );

// должно соответствовать столько физических ед., сколько

// их находится в одном логическом дюйме.

SetViewportExt( hDC, GetDeviceCaps( hDC, LOGPIXELSX ), GetDeviceCaps( hDC, LOGPIXELSY ) );

Такую систему координат удобно применять в системах, реализующих WYSIWYG технологию.

Одним из важнейших признаков является тип шрифта, который определяет возможности его применения на различных устройствах. В Windows шрифты делятся на три группы, в зависимости от их организации:

Поясним основные различия шрифтов:

Растровые шрифты:

Представляют из себя набор битовых образов отображаемых символов. Отличаются наиболее высокой скоростью вывода и самым высоким качеством текста, так как каждый символ разрабатывается вручную.

Недостатками являются ограниченное количество размеров шрифта (числом предоставленных разработчиком размеров битмапов), возможность изменять размер символов только в кратное число раз, причем при этом теряется качество, и невозможность вывода наклонных строк текста.

Возможна программная реализация наклонных и жирных начертаний на основе базового варианта.

Шрифты могут отображаться только на устройствах, поддерживающих обмен битовыми образами (плоттер, например, этого не делает). Кроме того, разные устройства требуют различных правил разработки растровых шрифтов. Вследствие этого, например, шрифты, применяемые для дисплея, не могут быть использованы для печати на матричном принтере, хотя эти устройства имеют близкие разрешающие способности.

Векторные шрифты:

Описывают каждый отображаемый символ как набор сопрягаемых линий. Так как для вывода символа требуется прорисовка всех линий, то это самые медленные в работе шрифты.

Достоинством является возможность вывода символов любого требуемого размера. Однако качество шрифта достаточно высокое только при средних размерах символов, так как у маленьких символов отдельные линии могут “слипаться”, а для больших символов становится заметной их структура - то есть видны отдельные линии которыми они нарисованы (толщина векторов независимо от размера равна 1 единице устройства).

Символы могут наклоняться как в виде всей строки, так и внутри строки. Программно возможно создание наклонных и жирных начертаний.

Шрифты могут отображаться на любых графических устройствах. Это единственный вид шрифтов, применяемый на плоттерах.

TrueType шрифты:

Это самые сложные шрифты Windows. Они описывают основной вид очертания символа, состоящего из прямых и кривых линий. Кроме того они содержат специальную информацию, нужную для масштабирования символов с минимальными искажениями образа.

При выводе сначала подготавливается растровый образ нужного размера, а затем осуществляется вывод текста. Скорость вывода такая же, как и растровых шрифтов, однако при подготовке шрифта нового типа или размера некоторое время уходит на формирование растровых образов символов.

При выводе символов небольшого размера качество невысокое, так как автоматическая генерация качественных битмапов малого размера практически невозможна. При этом TrueType шрифт часто заменяется на растровый шрифт малого размера (Small Fonts). Во всех остальных случаях это самые качественные шрифты.

Возможность легкого получения качественного шрифта любого размера делает TrueType шрифт самым применяемым в WYSIWYG технологии.

TrueType шрифты позволяют отображать наклонные строки текста.

Особенностью TrueType шрифтов является то, что программно невозможно создать жирные и наклонные начертания, поэтому каждый TrueType шрифт зачастую разрабатывается в четырех экземплярах: нормальном, наклонном, жирном и наклонном–жирном. Отображается только на устройствах, поддерживающих обмен битовыми образами.

TrueType шрифты отличаются от остальных шрифтов еще и тем, что позволяют использовать различные интервалы между разными символами. При этом выделяют пары символов (kerning pairs) и для них задают относительное смещение (приближение или удаление), для получения наиболее качественного текста. Задание “кернинга” осуществляется разработчиком шрифта.

Другой важнейший признак классификации шрифтов связан с расположением символов в кодовой таблице. К сожалению, разработчики Windows не предусмотрели серьезной поддержки многоязычных сред. Считается, что шрифт может относиться к одной из четырех возможных групп шрифтов.

При этом под ANSI подразумевается та кодовая таблица, которая принята в данной версии Windows. Строго говоря, ANSI существует только лишь в англоязычном варианте Windows. Так, например, все русификаторы заменяют стандартную кодовую таблицу ANSI на собственную, содержащую русские буквы. При этом, с точки зрения Windows, она будет все равно считаться ANSI. В русифицированном варианте кодовой таблицы Windows русские буквы занимают места с 192 по 255 включительно.

Аналогично, под OEM подразумевается кодовая таблица, принятая в DOS. Обычно это 437 кодовая таблица, однако возможно применение и других кодовых таблиц. Как правило, для русификации DOS применяется альтернативная кодировка ГОСТ, на основе которой была разработана 866 кодовая таблица (входила в состав MS DOS 4.0 распространяемом на территории СССР).

Кодовая таблица SYMBOL в Windows обозначает шрифт, состоящий из разных не–алфавитных символов, например стрелок, пиктограммок и пр. и последняя кодовая таблица SHIFTJIS имеет очень специфичное применение, рассчитанное на японскую азбуку KANJI. В этой азбуке предусмотрены некоторые символы, задаваемые последовательностью из двух байт.

Характеристики

Тип файла
Документ
Размер
1,35 Mb
Материал
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7027
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее