У меня есть строка, которая мне нужна для расчета размера Rect (высоты текста) при рисовании.Моя реализация использует функцию DrawTextW()
с флагами DT_WORDBREAK or DT_CALCRECT
.
Пример моей строки:
thisisaverylonglonglonglineoftextthatneedstofitinsideagivenrectwidth
Я вижу в MSDN документах , чтоDrawTextW()
Состояния метода:
Если наибольшее слово шире прямоугольника, ширина увеличивается.Если текст меньше ширины прямоугольника, ширина уменьшается.Если есть только одна строка текста, DrawText изменяет правую сторону прямоугольника так, чтобы он ограничивал последний символ в строке.
однако в документах MSDN метод DrawTextExW()
не делаетзаявите это.
Итак, я попытался вычислить высоту, используя метод DrawTextExW()
, однако результат такой же, как и с функцией DrawTextW()
, где он расширяет ширину прямоугольника, чтобы соответствовать самой большой линииtext.
Так как я могу правильно рассчитать высоту текстового прямоугольника с заданной (фиксированной) шириной при рисовании большой строки (без пробелов), где указаны DT_WORDBREAK
и DT_CALCRECT
?
РЕДАКТИРОВАТЬ:
В качестве примечания, кто-нибудь знает, как Microsoft Excel делает рисование текста ячейки?Есть ли вызов API для этого текстового чертежа?Именно отсюда вытекает мой первоначальный вопрос, однако способ, которым он реализован в Excel, заключается в рисовании текста и переноса слов / переноса слов на любой символ (а не только на пробел).