【问题标题】:Can I get TextFormattingMode=Display while drawing off-screen (e.g. RenderTargetBitmap)?我可以在屏幕外绘制时获得 TextFormattingMode=Display(例如 RenderTargetBitmap)吗?
【发布时间】:2012-02-23 10:25:16
【问题描述】:

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

我可以告诉RenderTargetBitmap 假设它正在绘制一个用于当前监视器之一的图像吗?还有其他方法可以让 WPF 使用Display 渲染模式进行离屏绘图吗?

我理解为什么这在理论上看起来是错误的,但在实践中我认为这不是不合理的事情是有原因的:

  • Display 模式允许使用别名文本,它在小尺寸下看起来比 Ideal 渲染更好,并且完全独立于 gamma 等监视器属性。
  • 在 ClearType 中呈现的小 Display-mode 文本的屏幕截图在 any 屏幕上看起来比 Ideal-mode 文本要好得多,即使在具有不同 gamma 的屏幕上也是如此。

WPF 渲染引擎可以做到这一点,还是我必须回到 GDI 上? (在屏幕外使用 Aliased 或 ClearType 渲染没有任何困难)

【问题讨论】:

    标签: wpf text-rendering


    【解决方案1】:

    当然没有显而易见的方法可以做到这一点。我想绘制图像从来都不是 WPF 的目标。事实上,它在大多数情况下都能很好地做到这一点,这一定是偶然的。

    【讨论】:

      【解决方案2】:

      现在看来这行得通。其他人可以验证吗?以下是相关代码:

      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:Display 和 Ideal 之间的差异在较小的字体大小时尤其明显。

      【讨论】:

      • 你有一个完整的例子来生成一个 png 吗?如果是这样,您能否将其发布在 pastebin.com 或类似网站上?
      • 是的,试试这个pastebin.com/8N2pbAHU。我替换了粘贴中的一些变量,因此代码未经测试。
      • 我已经试过了。我认为它与TextFormattingMode.Display 在实际屏幕上的效果不同:具体来说,没有 ClearType(没有亚像素抗锯齿)。鉴于最新的发展(MS Office 2013 和 Windows 8 中的模糊非 ClearTyped 渲染),我想这并不太令人惊讶......
      • 是的,我同意,能够设置渲染模式会很好!正因为如此,以及其他一些原因,我将采用 Freetype 路线在屏幕外渲染文本。 Freetype 刚刚包含了 Adob​​e 的提示算法,它看起来不错并且可以满足我的需求。
      猜你喜欢
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 1970-01-01
      • 2011-11-19
      相关资源
      最近更新 更多