我在WPF中绘制某些图像,这些图像将由游戏(由第三方开发)显示。我目前使用RenderTargetBitmap
生成图像。不幸的是,它似乎只支持Ideal
文本格式化模式,导致模糊的小字体。该应用程序是第三方游戏,因此无法使用图像。
我可以告诉RenderTargetBitmap
假设它正在绘制一张目标为当前监狱之一的图像吗?是否有另一种方法可以让WPF使用Display
渲染模式进行离屏绘制?
我理解为什么这在理论意义上看似错误,但在实践中我有理由认为这不是一件不合理的事情:
Display
模式允许的其中一项是别名文本,它在小于Ideal
渲染的情况下看起来更好,并且完全独立于监视器属性,例如gamma。Display
模式文本的屏幕截图在任何屏幕上看起来要好得多,即使是那些具有与Ideal
模式文本不同的伽玛的文本。WPF渲染引擎可以执行此操作,还是必须重新使用GDI? (在屏幕外使用别名或ClearType渲染没有任何困难)
答案 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:显示和理想之间的差异在较小的字体大小时尤其明显。