![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Canvas.TextOut - выравнивание
d_oleg © (2002-09-04 16:01:00)Подскажите пожалуйста, как нарисовать текст на канве разного размера, чтобы буквы нормально были выровнены по строчкам? Ну например сначала вызывается TextOut со шрифтом размером 10, а дальше строку надо продолжить шрифтом размером 20, как рассчитать смещение по Y относительно начала строки?
d_oleg (2002-09-06 09:07:00) [1]ну в-общем кому интересно, рассказываю:
определение базовой линии шрифта (baseline)
var TM: TTextMetric;
GetTextMetrics(Canvas.Handle, TM);
ascent := TM.tmAscent; // расстояние от верхней точки шрифта до базовой линии
d_oleg (2002-09-05 16:16:00) [2]ну "низ"-то для разных символов - понятие различное. Что-то "свисает" со строки. Например символ р. И в зависимости от размеров шрифта "свисает" по-разному. А TextHeight выдаёт размер абсолютный, максимально возможный.
Andrey007 (2002-09-05 15:44:00) [3]А что значит "могу выровнять все символы относительно их "низа" или "верха", но не относительно строки"? По-моему, выравнивание отнсительно "низа" - это иесть выравнивание относительно строки.
d_oleg (2002-09-05 15:01:00) [4]TextHeigt возвращает только высоту конкретного текста, который я указываю. Но я же не могу узнать с его помощью расстояние, на которое должны "свисать" вниз относительно строки символы j к примеру или "возвышаться" заглавные буквы - только лишь могу выровнять все символы относительно их "низа" или "верха", но не относительно строки.
lenin (2002-09-04 16:09:00) [5]Canvas.TextHeight