2015-03-13 98 views
0

我使用共享代码在Silverlight和WPF中生成文档。但是对于TextBlock对齐,输出是不同的。 例如,对于高度100的一个TextBlock,显示以Arial文本为100字号:TextBlock.BaselineOffset Silverlight和WPF之间的区别

  • 在WPF的BaselineOffset是92.16333
  • 在Silverlight的BaselineOffset是90.52667

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

  • 在WPF中,BaselineOffset是91.23666
  • 在Silverlight中的BaselineOffset是89,11

是有办法来纠正这种行为,在WPF和Silverlight相同的对齐?

感谢您的帮助

回答

0

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

在WPF中你必须使用RenderOptions即:

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

您可能需要与上述数值发挥得尽可能接近更多的控制。另外,由于渲染选项API只是WPF,如果您处于共享代码库中,则需要将其封装在#if WPF指令中。

+0

非常感谢您的想法。不幸的是,我试过所有现有的RenderOptions,没有人影响文本对齐。 – user2223898 2015-03-16 14:18:09