| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Как определить среднюю ширину символа шрифта? |
| Автор: Hacker 9.4.2006, 20:27 |
| Подскажите кто знает. Имеется шрифт типа TFont. Надо определить среднюю ширину одного символа. Или хотябы среднее отношение ширины к высоте. |
| Автор: Matematik 9.4.2006, 21:03 |
| Не знаю. Но может сойдет Canvas.TextWidth() и Canvas.TextHeight() |
| Автор: Демо 9.4.2006, 21:11 | ||||
Среднюю ширину символа можно определить только относительно к конкретной канве. Например, для Form1:
Для любого окна вместо Form1.Canvas.Handle нужно использовать:
Добавлено @ 21:14 R.Bottom - R.Top вернет высоту шрифта. |
| Автор: Hacker 9.4.2006, 21:20 |
| Спасибо за ответы, но боюсь мне это не подойдёт, т.к. нету там канвы, где мне Это применить надо. Но где-то в недрах шрифта должна содержаться информация об отношении ширины к высоте или "сжатие", не знаю как точно называется... Как бы её оттуда выковырять. |
| Автор: Демо 9.4.2006, 21:34 |
| Тогда какой смысл говорить об отношении ширины к высоте? На канве может быть разное количество пикселей по высоте и ширине. Тогда вообще ни о каком соотношении без канвы речи не может быть. |
| Автор: Snowy 9.4.2006, 22:42 |
| Вообще-то у большинства шрифтов нет фиксированного отношения ширины к высоте. Высота для всех символов одинаковая, а вот ширина как правило нет. А то, что канвы нет, так это не проблема. Создаем битмап, ассоциируем с нашим шрифтом и вычисляем значения для его канвы. Потом просто его убиваем. |
| Автор: Girder 10.4.2006, 09:28 |
| GetCharWidth32/GetCharWidth/GetCharABCWidths Один из примеров использывания: http://forum.vingrad.ru/index.php?showtopic=52406&view=findpost&p=415543 |
| Автор: Hacker 11.4.2006, 06:03 |
| Спасибо Girder, попробую как время появится. |