Форум: "Основная";
Текущий архив: 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