【问题标题】:SubAntialiasing fonts子抗锯齿字体
【发布时间】:2012-08-29 08:27:44
【问题描述】:

在某些地方,我启用了子抗锯齿功能,而在其他地方,我没有。 我使用结合 ClearType 的“显示”渲染模式。

但是,它确实是随机的,它使用灰度抗锯齿,而不是彩色抗锯齿。而且看起来很糟糕。怎么强制?

根据我猜的操作系统,它的工作方式不同。但奇怪的是,有些地方我有 SubAA,而另一些地方我没有。

当在不同的窗口上时,有些地方我有 subAA 作为一个整体。您知道为什么会存在这种不一致吗?我要SUBAA!!

谢谢

【问题讨论】:

    标签: wpf fonts antialiasing


    【解决方案1】:

    在某些情况下,ClearType 会在渲染路径中被禁用,这意味着它将恢复为灰度抗锯齿:

    • 当您在 Window 上使用 AllowsTransparency="True"

    • 在 Windows 设置中禁用 ClearType 时(并且您没有使用 TextOptions.TextRenderingMode="ClearType" 强制使用 ClearType)

    • ClearType 文本无法在不完全不透明的背景上正确显示,即您引入了一些透明度。

    • 如果Text由于使用a而被渲染到中间目标:

      • 视觉画笔
      • 画笔
      • 不透明蒙版
      • Viewport2DVisual3D
      • 效果
      • 位图效果

    您是否在顶级元素(即窗口)上使用TextOptions.TextFormattingMode="Display"? (该属性是继承的,所以如果你把它放在那里,它应该适用于你的窗口中的所有内容)。

    您可以使用RenderOptions.ClearTypeHint="Enabled" 在渲染路径中重新启用 ClearType,但您可能会遇到瑕疵,因为通常有充分的理由禁用它。

    当您有动画并且不想在动画生效期间进行质量较低的文本渲染(即禁用 ClearType)时,您可以使用 TextOptions.TextHintingMode="Fixed"

    您可以使用TextOptions.TextRenderingMode="ClearType" 强制使用 ClearType,即使 Windows 系统设置尚未启用它(在这种情况下,这不会对您做任何特别的事情,在这里供您参考)。

    【讨论】:

    • 谢谢。我错了@设置 TextBlock 背景。您需要设置父元素的背景。现在可以了。但是我发现了讨厌的错误。当您拥有 TextBlock 并在那里使用 Wrapping 时,某些 TextBlock 元素会以某种方式计算出它们的宽度错误,并且它们会非常早地剪切,例如早 10 倍。我不知道为什么(TextTrimming=characterEllipse)。
    • 不确定这是旧的还是什么,但 TextOptions.TextFormattingMode="Ideal" 效果很好
    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 2015-07-31
    • 2014-02-18
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多