Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.17;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
3-55929
Юра
2002-09-04 18:37
2002.10.17
Фильтрация с подчиненными таблицами


6-56251
star
2002-08-16 13:26
2002.10.17
Как автоматически установить соединение с интернетом


1-56136
GL00m
2002-10-09 13:37
2002.10.17
TParser


4-56421
Didopor
2002-09-02 19:40
2002.10.17
все Handle-лы нитей.


1-56124
Barman
2002-10-08 17:42
2002.10.17
InstallShield Express для Delphi6