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

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

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


Наверх

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