Проблема с подсчетом в TxGetNatualSize
От: Oleg_B  
Дата: 25.08.07 19:16
Оценка:
Доброе время суток всем!

Может быть кто-нибудь сможет подсказать, как разобраться с такой проблемой.
Я использую TextService из msftedit.dll для отрисовки RTF текста в нужном мне месте окна.
При этом мне необходимо узнать размер прямоугольника, в который будет вписываться этот текст при отрисовке, а потом передать этот прямоугольник в функцию отрисовки. Для получения размера прямоугольника я использую функцию TxGetNaturalSize, в которую передаю преобразованный в HIMETRIC прямоугольник клиентской части (это необязетельно действительно вся клиентская часть) окна. Полученный на выходе этой функции пересчитанный прямоугольник снова преобразуется из HIMETRIC в пиксели. Казалось бы все хорошо, но оказывается, что полученный здесь размер прямоугольника (точнее его высота) будет меньше на 2 — 4 пикселя по отношению к размеру фактически отрисованного текста, который рисуется функцией TxDraw, т. е. нижняя строка обрезается. Причем это происходит только с текстом, в котором есть отступы от левого края (например, текст используется маркированный список); при выводе текста без отступов, такого различия в рассчитанной высоте прямоугольника и в фактически отрисованной нет. Я читал, что это происходит из-за погрешности округления в алгоритмах функций TxGetNaturalSize и TxDraw. К сожалению, предложенный там метод решения у меня не сработал.

Может быть кто-то уже сталкивался с такой проблемой и нашел способ ее решить или обойти.

Заранее большое спасибо.

28.08.07 12:02: Перенесено модератором из 'C/C++' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.