Вниз
Скачать: CL | DM;

Применение процедур Canvas.TextWidth и Canvas.TextHeight   Найти похожие ветки 

 
SMT ©   (2004-01-08 17:57) [0]

Уважаемые господа,
У меня возникла проблема с определением длины текста в графическом режиме с помощью процедуры Canvas.TextWidth и Canvas.TextHeight. Они правильно определяют длину и высоту строки символов в пикселах при условии вызова из формы: Form.Canvas.TextWidth. Однако при выводе из канвы
принтера вида Printer.Canvas.TextWidth получается чрезмерное завышение числа пикселей. Например, для строки "10", написанных 12 кеглем шрифта "Arial", Form.Canvas.TextWidth дает 18 пикселей, а Printer.Canvas.TextWidth дает 56 пикселей. Как я выяснил, фактически этот расчет осуществляет функция Windows.GetTextExtentPoint32, которая находится в модуле System.pas. Я пытался проследить, как получаются
разные числа, но не смог.
С уважением, доктор медицинских наук Игорь Степанов


 
MBo ©   (2004-01-08 18:02) [1]

>Form.Canvas.TextWidth дает 18 пикселей, а >Printer.Canvas.TextWidth дает 56 пикселей.
Так и должно быть - у принтера DPI намного больше (обычно 96 для экрана, от 300 для лазерника) - так что примерно все сходится.


 
Тимохов ©   (2004-01-08 18:03) [2]

Может не в тему, но при печати на принтере пришел к выводу, что в некоторых случаях (это подстверждено инфой из МСДН) GetTextExtentPoint32 дает не всегда верный результат. Стал пользоваться GetTextExtentPoint32W - все ок.


 
Тимохов ©   (2004-01-08 18:10) [3]

Мое замечание относилось к тому случаю, когда строки очень длинные. Не помню, сколько но у нас в печати были проблемы, пока не нашли ясного указания в МСДН о том, что для длинных строк нужно пользоваться GetTextExtentPoint32W



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.026 c
1-63204
Андреев
2004-01-09 21:28
2004.01.20
Новый пункт в MainMenu


1-63202
Aleks_S
2004-01-10 04:09
2004.01.20
Компонент в ячейке TStringGrid?


3-62966
GIL
2003-12-24 13:09
2004.01.20
Boolean


3-62995
Sanich
2003-12-23 15:28
2004.01.20
Помогите с фильрацией по дате


1-63222
димка
2004-01-10 20:19
2004.01.20
как проверить запущена ли программа




   Наверх