WPF呈现不同的方式,在Windows XP vs Windows7
-
05-07-2019 - |
题
为什么WPF呈现不同的方式,在Windows XP vs Windows7?
我使用。净sp1的两台计算机..
我的布局是这样的窗口,没有工具栏和设定最大化,所以它非常适合的整体画面。
在这,我有一个视框设置为使用弹性:均匀的,并下,我有我的LayoutRoot.
这样,我希望得到相同的布局的所有计算机上,但看来这并不呈现完全相同,在Windows XP。有些项目是一个比较小的和布局,看起来不是很大。
我试图改变我的resoulution在我的窗7算机来的同一为Windows XP计算机,它使布像是应该的。
和两台计算机使用的96DPI。
解决方案
我的经验:
我不确定是不是问题,我注意到Windows 7使用硬件加速来绘制WPF应用程序。 Windows XP没有。
您可以使用以下内容检查是否是这种情况:
public partial class App
{
public static int Tier { get { return RenderCapability.Tier >> 16; } }
static App()
{
Console.Out.WriteLine("Render Tier: {0}", Tier);
}
}
如果使用完全硬件加速绘图,则渲染层应返回2。 0 =软件,1 =中间的东西,如果猜测
其他提示
花了我大约三个小时以最后弄清楚这一点-之后多的侦探工作,但现在它素是完美的!
它的出现,WPF在Windows XP和WPF在Windows7的不仅有不同的默认字体 脸 以及一个默认字体 尺寸.
- 我有一个问题,在字体呈现不同的方式,在Windows XP从他们是如何在Windows7。这是很关键的,因为最终的输出是打印机,并且他们需要的是相同的。出现了最初的问题是一个差别在线间隔。
- 是的-我有同样确切的字体上安装了Windows XP,因为我是在使用Windows7
- 是的-我试图非常一般性的字体(宋体)和仍有同样的问题。
- 是的-同一DPI在这两个机。
- 是的-同一个结果是否在一个虚拟机(Windows XP模式)或在一个真正的Windows XP机。
最终,我发现在的字体,我在那里指定一个明确的大小看起来相同,在Windows XP,只有那个我没有指定一个明确的尺寸,他们是不同的。
所以这里就是我的固定它在我的 MainWindow.xaml
-有 ContentControl
设置一个默认的大小:
<Grid x:Name="LayoutRoot" Background="#FFDEDEDE" UseLayoutRounding="True">
<ContentControl FontFamily="Segoe UI" FontSize="12">
... window contents ...
</ContentControl>
</Grid>
注: 如果你使用 尽 你可能需要输入 FontSize="12"
通过手。如果你选择它从属性设计它将它删除,因为它认为,12个是已经默认的!
就像我说的我的目的地是印-所以我不得不这样做的控制正在印制。
在别的地方可以我设置这个默认字体大小?无论如何,我现在有素的完美呈现在Windows XP和Windows7,它们的不同仅通过明确的类型抗混差异。
注: UseLayoutRounding
不是我的解决方案,但我总是用我根控制。
默认字体不同
制作WPF按钮
<Button x:Name="button" Width="100" Height="25" Content="Button" Click="Button_Click"/>
和代码背后:
private void Button_Click(object sender, RoutedEventArgs e)
{
string msg = string.Format("Number of fonts: {1}{0}Font Family: {2}{0}Font Size: {3}",
Environment.NewLine,
button.FontFamily.FamilyNames.Values.Count.ToString(),
button.FontFamily.FamilyNames.Values.First().ToString(),
button.FontSize.ToString());
MessageBox.Show(msg);
}
在每个操作系统上运行此操作,您将看到XP和Windows7的默认字体不同。
XP的默认字体是&#8220; Tahoma&#8221; 11号
Windows 7的默认字体是&#8220; Segoe UI&#8221; 12号
不同版本的Windows具有不同的默认字体(也是相同字体的不同版本)和不同的字体渲染引擎 - 因此系统之间的文本大小不同。
您可以尝试将字体设置为相同的字体并查看其工作原理,也可以尝试使用多种字体来检查差异最小的位置。