在屏幕外绘图时是否可以获取TextFormattingMode =显示(例如RenderTargetBitmap)?

时间:2012-01-31 17:22:07

标签: wpf text-rendering

我在WPF中绘制某些图像,这些图像将由游戏(由第三方开发)显示。我目前使用RenderTargetBitmap生成图像。不幸的是,它似乎只支持Ideal文本格式化模式,导致模糊的小字体。该应用程序是第三方游戏,因此无法使用图像。

我可以告诉RenderTargetBitmap假设它正在绘制一张目标为当前监狱之一的图像吗?是否有另一种方法可以让WPF使用Display渲染模式进行离屏绘制?

我理解为什么这在理论意义上看似错误,但在实践中我有理由认为这不是一件不合理的事情:

  • Display模式允许的其中一项是别名文本,它在小于Ideal渲染的情况下看起来更好,并且完全独立于监视器属性,例如gamma。
  • 使用ClearType呈现的小Display模式文本的屏幕截图在任何屏幕上看起来要好得多,即使是那些具有与Ideal模式文本不同的伽玛的文本。

WPF渲染引擎可以执行此操作,还是必须重新使用GDI? (在屏幕外使用别名或ClearType渲染没有任何困难)

2 个答案:

答案 0 :(得分:0)

肯定没有明显的方法。我想绘制图像绝不是WPF的目标;事实上,它实际上可以在大多数情况下相当好地完成这一事实。

答案 1 :(得分: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);

编辑:忘记提及我正在使用.NET 4.5框架

Edit2:显示和理想之间的差异在较小的字体大小时尤其明显。