Как эффективно визуализировать текст DirectWrite?

Я пишу приложение C# Direct2D, используя SharpDX, однако я могу понять ответы / примеры, которые представлены в C++.

Я хочу визуализировать текст, но не хочу воссоздавать геометрию текста каждый раз, когда хочу визуализировать его. Однако, используя IDWriteTextLayout а также IDWriteTextRenderer заставить меня воссоздать геометрию каждый раз, когда текст отображается с помощью GetGlyphRunOutline() в DrawGlyphRun(), Это приводит к снижению производительности рендеринга, когда я пытаюсь визуализировать много текста (я проверяю это, вставляя в него 600 строк собственного кода моего приложения, и частота кадров сразу же страдает).

Я избежал проблемы воссоздания геометрии, кистей и других зависящих от устройства ресурсов без необходимости использования класса, который поддерживает набор словарей, связывая каждую фигуру / текст / элемент со своими ресурсами и воссоздавая их при необходимости.

Теперь, ничего из этого не было бы проблемой, если бы я рендерил текст одной и той же кистью: я могу просто создать GeometryGroup а затем визуализировать его с помощью кисти и обводки слоя. Тем не менее, это не работает для меня, потому что я хочу, чтобы пользователь мог сделать различные части текста любого цвета, который они хотят.

Я столкнулся с проблемой реализации пользовательского средства визуализации текста, потому что мне требуется, чтобы текст можно было отображать штрихом, что, по-видимому, невозможно по умолчанию. Это также то, что заставляет меня создавать геометрию, а не просто вызывать DrawTextLayout(),

Как мне связать Geometrys я генерирую в DrawGlyphRun() кистям и мазкам, которые я могу отрисовать позже?

0 ответов

Другие вопросы по тегам