为什么WPF呈现不同的方式,在Windows XP vs Windows7?

我使用。净sp1的两台计算机..

我的布局是这样的窗口,没有工具栏和设定最大化,所以它非常适合的整体画面。

在这,我有一个视框设置为使用弹性:均匀的,并下,我有我的LayoutRoot.

这样,我希望得到相同的布局的所有计算机上,但看来这并不呈现完全相同,在Windows XP。有些项目是一个比较小的和布局,看起来不是很大。

我试图改变我的resoulution在我的窗7算机来的同一为Windows XP计算机,它使布像是应该的。

和两台计算机使用的96DPI。

Windows XP

Windows7

有帮助吗?

解决方案

我的经验:

我不确定是不是问题,我注意到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具有不同的默认字体(也是相同字体的不同版本)和不同的字体渲染引擎 - 因此系统之间的文本大小不同。

您可以尝试将字体设置为相同的字体并查看其工作原理,也可以尝试使用多种字体来检查差异最小的位置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top