Frage

Warum WPF gerendert auf Windows XP vs Windows 7?

Ich bin mit .NET SP1 auf beiden Computern..

Mein layout ist wie das Fenster, das hat keine Symbolleiste und festgelegt ist, zu maximieren, so dass es passt der ganze Bildschirm.

Unter, dass, ich habe eine Viewbox verwenden Strecke:Uniform, und, unter, dass ich meine LayoutRoot.

Auf diese Weise hoffte ich, um das gleiche layout auf allen Computern, aber es scheint nicht wiedergegeben genau das gleiche auf Windows XP.Einige Gegenstände sind ein bisschen kleiner und das layout sieht nicht so toll.

Ich habe versucht, zu ändern, meine resoulution auf meinem Windows 7-computer, um das gleiche wie dem Windows XP-computer, und es hält das layout wie es soll.

Und beide verwenden Computer-96 DPI.

Windows XP

Windows 7

War es hilfreich?

Lösung

Meine Erfahrung:

Ich bin mir nicht sicher, ob es ist das Problem, ich bemerkte Windows 7 die Hardwarebeschleunigung zum zeichnen der WPF-Anwendung.Windows XP nicht.

Sie können überprüfen, ob dies der Fall ist, indem Sie so etwas wie dieses:

public partial class App
{
    public static int Tier { get { return RenderCapability.Tier >> 16; } }

    static App()
    {
        Console.Out.WriteLine("Render Tier: {0}", Tier);
    }
}

Ihre rendering-tier zurückkehren sollte 2, wenn verwendet volle hardware-beschleunigte Zeichnung.0 = software 1 = etwas in die Mitte, wenn guess

Andere Tipps

Dauerte etwa drei Stunden, um endlich herauszufinden - nach viel detektiv-Arbeit, aber jetzt ist es pixel perfekt!

Es scheint, dass WPF unter Windows XP und WPF unter Windows 7 nicht nur haben verschiedene Standard-schriftart Gesichter sowie als Standard-schriftart Größen.

  • Ich hatte ein problem, wo Schriften wurden gerendert auf Windows XP aus, wie Sie auf Windows 7.Es war sehr kritisch, da die Letzte Ausgabe war auf den Drucker, und Sie mussten identisch sein.Es schien zunächst, dass das problem war der Unterschied in der Zeilenabstand.
  • Ja, ich hatte exakt das gleiche schriftart auf Windows XP installiert da ich auf Windows 7
  • Ja, ich habe versucht, eine sehr generische schriftart (Arial) und hatte immer noch die gleichen Probleme.
  • Ja - Gleichen DPI auf beiden Maschinen.
  • Ja - das Gleiche Ergebnis, ob in einer VM (Windows-XP-Modus), oder auf einer echten Windows-XP-Rechner.

Schließlich entdeckte ich, dass das Schriften, wo ich war, die Angabe eine explizite Größe sah identisch auf Windows XP, und nur die, wo ich nicht an eine explizite Größe waren Sie anders.

Hier ist also, wie ich fixiert in meinem MainWindow.xaml - mit einem ContentControl zu legen Sie eine Standard-Größe:

<Grid x:Name="LayoutRoot" Background="#FFDEDEDE" UseLayoutRounding="True">
    <ContentControl FontFamily="Segoe UI" FontSize="12">
         ... window contents ...
    </ContentControl>
</Grid>

Hinweis: Wenn Sie Blend möglicherweise müssen Sie FontSize="12" von hand.Wenn Sie wählen Sie Sie aus der Eigenschaften-designer-es wird Sie löschen, weil es denkt, 12 ist bereits Standard!

Wie ich schon sagte, mein Ziel war der Drucker, - ich hatte also das gleiche zu tun für die Kontrolle gedruckt werden.

Wo sonst kann ich diese Standard-Schriftgröße?Jedenfalls habe ich jetzt wieder pixel-perfekten Wiedergabe auf Windows XP und Windows 7, und Sie unterscheiden sich nur durch die cleartype-Kantenglättung Unterschiede.

Hinweis: UseLayoutRounding ist nicht Teil meiner Lösung - aber ich benutze es auf meinem root-Kontrolle auch.

Die Standard-Schriftarten sind in verschiedenen

Machen Sie eine WPF-Schaltfläche

<Button x:Name="button" Width="100" Height="25" Content="Button" Click="Button_Click"/>

und der code dahinter:

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);
}

Führen Sie dies auf jedem Betriebssystem, und Sie werden sehen, dass die Standard-fonts für XP und Windows7 sind unterschiedlich.

Standard-schriftart für XP ist "Tahoma" size 11

Standard-schriftart in Windows 7 "Segoe UI" size 12

Die verschiedenen Windows-Versionen haben unterschiedliche Standard-Schriften (auch verschiedene Versionen des gleichen Schriften) und verschiedenen font-rendering-engines - as ein Ergebnis, die text Größe ist anders zwischen Systemen.

Sie können versuchen, die schriftart zu schriftart und sehen Sie, wie es funktioniert, vielleicht probieren Sie mehrere Schriftarten zu prüfen, wo der Unterschied am kleinsten ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top