Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Плавное изменение размера шрифта [D6, Win2k]


cult ©   (2002-10-03 17:27:00) 

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

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


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

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

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

Thanks.

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


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

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-04 19:40:00) [3]

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


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

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


Romkin   (2002-10-04 10:47:00) [5]

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


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

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;


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

Th:

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

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

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


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

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


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

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


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

Anatoly Podgoretsky:

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


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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо