【问题标题】:Difference between Silverlight and WPF for TextBlock.BaselineOffset用于 TextBlock.BaselineOffset 的 Silverlight 和 WPF 之间的区别
【发布时间】:2015-03-13 14:38:00
【问题描述】:

我正在使用共享代码在 Silverlight 和 WPF 中生成文档。但是 TextBlock 对齐的输出不同。 例如对于一个高度为 100 的 TextBlock,在 Arial 中显示一个 FontSize 为 100 的文本:

  • 在 WPF 中,BaselineOffset 为 92.16333
  • 在 Silverlight 中,BaselineOffset 为 90.52667

这种差异取决于字体系列,例如,如果我将 Arial 替换为 Times New Roman:

  • 在 WPF 中,BaselineOffset 为 91.23666
  • 在 Silverlight 中,BaselineOffset 为 89,11

有没有办法纠正这种行为并在 WPF 和 Silverlight 中保持相同的对齐方式?

感谢您的帮助

【问题讨论】:

    标签: wpf silverlight textblock


    【解决方案1】:

    在 WPF 和 Silverlight 中都工作过,我可以确认在相同字体大小下相同字体的渲染输出在屏幕上看起来明显不同。

    在 WPF 中,您可以使用 RenderOptions 进行更多控制,即:

    RenderOptions.SetBitmapScalingMode(tb, BitmapScalingMode.NearestNeighbor);
    RenderOptions.SetClearTypeHint(tb, ClearTypeHint.Auto);
    RenderOptions.SetEdgeMode(tb, EdgeMode.Aliased);

    您可能需要使用上述值才能尽可能接近。此外,由于 renderoptions API 仅是 WPF,如果您在共享代码库中,则需要将其包装在 #if WPF 指令中..

    【讨论】:

    • 非常感谢您的想法。不幸的是,我已经尝试了所有现有的 RenderOptions 并且没有人影响文本对齐。
    猜你喜欢
    • 2017-09-22
    • 2011-11-25
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多