Раздражающее обтекание текстом с помощью GDI & Direct3D - PullRequest
0 голосов
/ 24 января 2011

Если я использую DrawText Direct3D, который ведет себя как аналог GDI, и я включаю флаг форматирования DT_WORDBREAK, он будет обрезать текст по апострофам при возникновении ситуации, в результате чего многие заголовки и текстовые дисплеи будут выглядеть как беспорядок , Например, он будет выглядеть как:

Всадник '
Голова

Когда следует сказать:

The
Всадник
Голова

Кажется маловероятным, учитывая ограничительный характер функций обработки шрифтов, но есть ли способ указать его так, чтобы он вырезал только текст на пустом пространстве или когда абсолютно ничего нельзя сделать?

Ответы [ 3 ]

1 голос
/ 24 января 2011

Я уже сталкивался с этим раньше, и единственное решение - написать свой собственный упаковщик слов, используя DT_CALCRECT для измерения ширины заданной строки.Это раздражает, и это отстой, но я никогда не видел альтернативы.

1 голос
/ 24 января 2011

Вы можете обернуть вручную с помощью функции GetTextExtentPoint32 .

0 голосов
/ 24 января 2011

Я так не думаю (могу ошибаться). Но вы можете установить «виртуальный» лимит ширины. Рассчитайте длину строки (char_count * font_width) и сделайте прыжки самостоятельно. Вы даже можете добавить специальный символ "\ n", чтобы вставить свои собственные прыжки ...

...