2012-01-31 1 views
1

Я рисую определенные изображения в WPF, которые будут отображаться в игре (разработанной третьей стороной). В настоящее время я рисую изображения, используя RenderTargetBitmap. К сожалению, похоже, что это поддерживает только режим форматирования текста Ideal, что приводит к размытым небольшим шрифтам. Приложение является сторонней игрой, и поэтому нет возможности использовать изображения.Могу ли я получить TextFormattingMode = Показать при выводе за пределы экрана (например, RenderTargetBitmap)?

Могу ли я сообщить RenderTargetBitmap, чтобы предположить, что он рисует изображение, предназначенное для одного из нынешних монахов? Есть ли другой способ заставить WPF использовать режим рендеринга Display для экранного рисунка?

Я понимаю, почему это может показаться неправильным в теоретическом смысле, но на практике есть причины, почему я думаю, что это не является необоснованным, что нужно сделать:

  • Одна из вещей, режим Display позволяет это псевдонимы текст, который выглядит лучше при небольших размерах, чем рендеринг Ideal, и полностью не зависит от свойств монитора, таких как гамма.
  • Скриншот от маленького Display -модульный текст, отображаемый в ClearType, выглядит намного лучше на любом экране, даже с разной гаммой, чем Ideal -mode текст.

Может ли это сделать двигатель рендеринга WPF, или я должен вернуться на GDI? (без каких-либо трудностей с использованием экранированного изображения с псевдонимом или ClearType)

ответ

0

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

0

Кажется, что это работает сейчас. Может ли кто-нибудь проверить? Вот соответствующий код:

var textBlock = new TextBlock(); 
textBlock.Text = "Hello World"; 
textBlock.FontFamily = new System.Windows.Media.FontFamily("Arial"); 
textBlock.Background = System.Windows.Media.Brushes.Transparent; 
textBlock.Foreground = System.Windows.Media.Brushes.Black; 
textBlock.FontSize = 50; 

// . Set Formatting Mode Works! Setting the rendering mode doesn't. 
System.Windows.Media.TextOptions.SetTextFormattingMode(textBlock, System.Windows.Media.TextFormattingMode.Display); 

Edit: Забыл упомянуть, я использую .NET Framework 4.5

Edit2: Разница между дисплеем и Ideal особенно заметно при малых размерах шрифта.

+0

У вас есть полный пример, который создает png? Если да, не могли бы вы разместить его на pastebin.com или подобном? –

+0

Да, попробуйте этот http://pastebin.com/8N2pbAHU. Я заменил некоторые вары, которые у меня были в пасте, поэтому код не тестировался. –

+0

Я пробовал это. Я не думаю, что он имеет тот же эффект, что и «TextFormattingMode.Display» на реальном экране: в частности, нет ClearType (без подпиксельного сглаживания). Учитывая последние события (размытие рендеринга без ClearTyped в MS Office 2013 и Windows 8), это не слишком удивительно, я думаю ... –

Смежные вопросы