Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Вниз

Плавное изменение размера шрифта   Найти похожие ветки 

 
cult   (2002-10-03 17:27) [0]

Вот такой сабж.
Хочу менять размер шрифта плавно.
Имеется графический редактор с плавным изменением масштаба. А шрифт меняется только дискретно (8-9-10-12 и т.д.) Ето некрасиво.

Есть ли какие-нибудь способы штатного вывода текста с плавным изменением размера буковок? Может, кто-нибудь решал сию проблему?


 
REA   (2002-10-03 17:37) [1]

Я сталкивался, но не решил. Можно конечно вывести в промежуточный буфер и там смаштабировать StretchDraw, но лениво.


 
Игорь Шевченко   (2002-10-03 17:53) [2]

Штатного - нету. В книге Фень Юаня "Программирование графики для Windows" есть идеи, может, и готовая программа.
Где лежит книга - не знаю :-)


 
Anatoly Podgoretsky   (2002-10-03 17:57) [3]

Не надо использовать растровые шрифты, используй TTF их размер может меняться от 0.001 до 999.999 шагом 0.001


 
cult   (2002-10-03 18:12) [4]

Anatoly Podgoretsky:

Совет хорош, но ведь размер шрифта - целая величина...
Во всяком случае, у дельфового TFont.


 
Th   (2002-10-03 18:19) [5]

Ты не пользуйся TFOnt, гоняй напрямую через HFont, там можно выставлять Height (не путать с Size) - он меньшую дискретность имеет


 
Th   (2002-10-03 18:21) [6]

Возможно Этот Height можно нецелочисленным сделать - не помню.


 
cult   (2002-10-03 18:23) [7]

Th:

тогда вот такие вопросы:

1) как, имея Canvas HDC, получить человеческий доступ к этому HFont? Чей-то не могу сообразить.

2) А точно повлияет? Работая с TFont, я уже пытался менять Height - все равно размеры меняются дискретно.


 
Игорь Шевченко   (2002-10-03 18:26) [8]

Th © (03.10.02 18:21)

Нельзя

typedef struct tagLOGFONT { // lf
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT;


 
Romkin   (2002-10-04 10:47) [9]

ТАк если просто масштабирование всего содержимого окна, то зачем лезть в шрифт?
Есть функции SetMapMode, SetWindowOrgEx и тд - это позволяет задать произвольное преобразование координат


 
REA   (2002-10-04 10:53) [10]

Черт бы подрал этого Delphi. Ни тебе поворота шрифтов и т.п.
У него ведь менеджер шрифтов их сразу кэшировать перестанет и ресурсов начнет отъедаться много или тормозить будет.
Но идея хорошая. Я как то не сообразил, что можно Height установить руками. Спасибо.


 
cult   (2002-10-04 19:40) [11]

Romkin:
спасибо, это уже гораздо "ближе к телу"
займусь проработкой вопроса.


 
Anatoly Podgoretsky   (2002-10-04 22:20) [12]

cult © (03.10.02 18:12)
Точно, но их твоего вопроса не ясно с чем ты работаешь, если с TFont то размеры в пунктах (это примерно 0,35 mm) если с виндоускими структурами то в логических единицах, чаше всего это MM_TEXT то это один пиксель, а меньше и смысла нет, для других режиов нужен пересчет, интересны режимы MM_HIENGLISH (0.001 дюйма) и MM_HIMETRIC 0.01 миллиметра, короче большой простор для творчества.
Для диалогов лучше использовать пункты (1/72 дюйма) и перевродить в логические единицы
В общем задача немного сложнее чем просто работать с TFont но и возможности больше, когда я говорил об 0.001 то я имел в виду MM_HIENGLISH


 
cult   (2002-10-07 16:51) [13]

Новый вопрос по старой теме:
Anatoly Podgoretsky, спасибо ему большое, подсказал мне, что делать, чтобы плавно менять размеры шрифта на Canvas: поменять логическую единицу на более точную, и изменения станут гораздо более плавными. Но хотелось бы проделать такое и с контролами, у которых Canvas нет, например, столь же плавно менять размеры шрифта в TMemo.

Может, кто-нибудь подскажет, как для TMemo изменить единицу измерения размера шрифта (с MM_TEXT, которая там, похоже, стоит, на MM_HIENGLISH)?

Thanks.

p.s. Пока все думают, попробую присвоить фонту из TMemo значение фонта из Canvas - вдруг поможет?...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.10.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-56000
kaif
2002-09-26 04:14
2002.10.17
Чем же занимается таинственный модуль Proxies в ?


1-56206
Supra
2002-10-07 00:40
2002.10.17
Вопрос по ЛистБоксу


1-56134
Sego
2002-10-08 14:57
2002.10.17
Архивация в консольном приложении


4-56420
BorisMor
2002-09-02 12:58
2002.10.17
Процесс.


14-56273
Viktor Kushnir
2002-09-23 09:10
2002.10.17
Перепись населения Дубль2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский