Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > LOGFONT и TEXTMETRIC


Автор: Edik 16.6.2007, 20:12
Объясните мне когда надо пользоваться при выводе текста структурой LOGFONT, а когда структурой TEXTMETRIC?

Автор: jonie 17.6.2007, 21:48
Цитата

бъясните мне когда надо пользоваться при выводе текста структурой LOGFONT, а когда структурой TEXTMETRIC?
 ?

Автор: Edik 19.6.2007, 16:28
Ну вобще зачем эта структура , а зачем та? Почему есть две структуры для операции со шрифтами? В каких случаях используеться одна, и в каких случаях другая? LOGFONT я знаю точно используеться перед выводом текста. в ней запоняються типа размер шрифта, имя шрифта и т.д. а зачем структура textmetric? что она нам дае? когда ею надо пользоваться?

Автор: Coocky 19.6.2007, 16:58
Ну что-поможет кто парню или мне взяться? smile
Ладно.. Беру огонь на себя.smile
Структура TEXTMETRIC содержит основную информацию о физическом шрифте.
LOGFONT-о логическом.
Чувствую вопрос-а в чем же разница? smile)
Поехали
В Windows любые операции вывода являются графическими. Подсистема GDI делает вывод анпаратно независимым. Это означает, что информация, выводимая на любое физическое устройство, будет выглядеть почти одинаково.
Это достигается путем использования логических координат. Размеры области физического устройства изменяются в зависимости от марки, технологии и т. д. Чтобы верно передать детали изображения, созданного в логической системе, в физическое устройство, система преобразовывает их путем отображения (mapping) прямоугольной области из одного координатного пространства в другое. При копировании каждой точки прямоугольной области из одного пространства в другое Windows применяет алгоритм трансформации, который в конечном счете изменяет размеры, ориентацию и форму всего объекта.
Вот и получается что у нас есть , в логической системе восемь существующих режимов отображения координат задаются с помощью символьных констант, определенных в файле Wingdi.h: 

#define MM_TEXT 1 // 1 лог. ед. - 1 пиксел 

#define MM_LOMETRIC 2 // 1 лог. ед. - 0,1 мм 

#define MM_HIMETRIC 3 // 1 лог. ед. - 0,01 мм 

#define MM_LOENGLISH 4 // 1 лог. ед. - 0,01 дюйма 

#define MM_HIENGLISH 5 // 1 лог. ед. - 0,001 дюйма 

#define MMJTWIPS 6 //1 лог. ед. - 1/1440 дюйма

Дальше продолжать? smile Или непонятно

Автор: Edik 19.6.2007, 19:07
Ага! Теперь все ясно. Только я хотел что бы еще мне объяснили, когда нужно пользоваться TEXTMETRIC? Вот я в программе одной встречал функцию GetTextMetric(&tm). В каких случаях нам нужен "физический" шрифт, а не логический?

Автор: Coocky 20.6.2007, 09:28
Цитата(Edik @  19.6.2007,  19:07 Найти цитируемый пост)
В каких случаях нам нужен "физический" шрифт, а не логический?

А что-разве ты можешь задать ФИЗИЧЕСКИЙ шрифт? smile) Если я ошибаюсь-поправте меня.
Просто ты можешь получить ФИЗИЧЕСКИЙ шрифт GetTextMetriс и ЛОГИЧЕСКИЙ шрифт GetLogFont Для чего? Ну мне б было неудобно расчитывать координаты чего-то там, отталкиваясь от ЛОГИЧЕСКОГО шрифта.. Ну вернет он мне 14 едениц. А сколько это пикселей, к примеру? Или дюймов? Мне еще надо знать метрическую ситстему, с которой я работаю. Потом это все переводит. Нуедобно.
А так я знаю, что у меня окно 300 пикселей в ширину. Сколько букв поместится? Я получу физические данные шрифта-и переведу. smile
Типа того.

Автор: Edik 24.6.2007, 15:12
Ага! Спасибо огромное! Понял.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)