Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.20;
Скачать: 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 вся ветка

Текущий архив: 2004.01.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.042 c
1-63199
ИМХО
2004-01-10 05:34
2004.01.20
Размер файла FileSize


14-63336
Undert
2003-12-29 12:44
2004.01.20
Хомячки


1-63157
афвуд
2004-01-06 18:51
2004.01.20
TNotifyEvent


3-63036
Apollo
2003-12-11 17:05
2004.01.20
Обновление DataSet


4-63434
Talla2k
2003-11-15 12:30
2004.01.20
Убийство потока через сообщение