Почему DrawTextLayout игнорирует кисти из SetDrawingEffect в SharpDX?

Моя цель - нарисовать текст в одном макете с определенными диапазонами разных размеров и непрозрачности. ID2D1RenderTarget::DrawTextLayout метод, кажется, путь.

Документация для defaultForegroundBrush параметр:

Кисть, используемая для рисования любого текста в textLayout, с которым еще не связана кисть в качестве эффекта рисования (определяется методом IDWriteTextLayout::SetDrawingEffect).

Согласно разделу "Замечания" IDWriteTextLayout::SetDrawingEffect метод,

ID2D1Brush, такой как цветная или градиентная кисть, может быть установлен как эффект рисования, если вы используете ID2D1RenderTarget::DrawTextLayout для рисования текста, и эта кисть будет использоваться для рисования указанного диапазона текста.

Этот эффект рисования связан с указанным диапазоном и будет передан обратно в приложение посредством обратного вызова, когда диапазон рисуется во время рисования.

Это звучит как ID2D1RenderTarget::DrawTextLayout определенно будет использовать любую кисть, установленную IDWriteTextLayout::SetDrawingEffect, Этот неуправляемый ответ C++, кажется, подтверждает эту идею.

Однако на практике DrawTextLayout игнорирует любой SolidColorBrush Я установил с помощью SetDrawingEffect, Я получаю стили и размеры в соответствующих диапазонах, но все окрашивается с помощью кисти по умолчанию.

Я работал над этим, внедряя пользовательский текстовый рендер ( gist), который очень прост и нарисовал именно то, что я ожидал от ID2D1RenderTarget::DrawTextLayout согласно документации. Я был бы удовлетворен, но производительность TextRendererBase а также DrawGlyphRun более чем на 25% медленнее, чем ID2D1RenderTarget::DrawTextLayout,

Что может быть причиной этой проблемы? Могу ли я использовать цвет в соответствии с документацией и все еще использовать ID2D1RenderTarget::DrawTextLayout?

1 ответ

Вместо:

layout.SetDrawingEffect(myBrush, new TextRange(1, 5));

Назовите это так:

layout.SetDrawingEffect(myBrush.NativePointer, new TextRange(1, 5));
Другие вопросы по тегам