Pergunta

Por que WPF processar diferente no Windows XP vs Windows 7?

Eu estou usando .NET SP1 em ambos os computadores ..

Meu layout é como esta janela que não tem barra de ferramentas e está definido para maximizar a que ele se encaixa a tela inteira.

De acordo com isso, eu tenho um conjunto Viewbox usar Stretch: Uniforme, e sob que eu tenho a minha LayoutRoot

.

Desta forma, eu esperava para obter o mesmo layout em todos os computadores, mas parece que não torna exatamente o mesmo no Windows XP. Alguns itens são um pouco menor e o layout não parece tão grande.

Eu tentei mudar minha resoulution no meu computador Windows 7 para o mesmo que o computador com o Windows XP, e mantém o layout como é suposto.

E ambos os computadores usam 96 DPI.

Windows XP

Windows 7

Foi útil?

Solução

Meu experiência:

Eu não tenho certeza se é o problema, eu notei aceleração 7 usos hardware do Windows para chamar a aplicação WPF. Windows XP não.

Você pode verificar se este for o caso, usando algo parecido com isto:

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

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

O seu nível de renderização deve retornar 2 se usado hardware full acelerado desenho. 0 = software, 1 = alguma coisa no meio se palpite

Outras dicas

me levou cerca de três horas para finalmente descobrir isso - depois de muito trabalho de detetive, mas agora é Pixel Perfect

!

Parece que WPF no Windows XP e WPF sobre o Windows 7 não só têm fonte padrão diferente enfrenta , bem como uma fonte padrão tamanhos .

  • Eu tive um problema onde fontes foram tornando de forma diferente no Windows XP a partir de como eles estavam no Windows 7. Ele foi bastante crítico desde que o resultado final foi para a impressora, e eles precisavam de ser idênticos. Parecia, inicialmente, que o problema era a diferença no espaçamento entre linhas.
  • Sim - Eu tive a mesma fonte exata instalado no Windows XP como eu estava usando no Windows 7
  • Sim - Eu tentei uma fonte muito genérico (Arial) e ainda tinha os mesmos problemas
  • .
  • Sim. - Mesmo DPI em ambas as máquinas
  • Sim. - Mesmo resultado seja em uma VM (Windows XP Mode) ou em uma verdadeira máquina Windows XP

Finalmente eu descobri que as fontes onde eu estava especificando um tamanho explícita pareciam idênticas no Windows XP, e apenas aqueles onde eu não tenha especificado um tamanho explícita eram diferentes.

Então, aqui está como eu fixa-lo na minha MainWindow.xaml - com um ContentControl para definir um tamanho padrão:

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

Nota: Se você estiver usando Mistura você pode precisar para entrar FontSize="12" à mão. Se você selecioná-lo a partir do designer de propriedades que irá excluí-lo, porque ele acha que 12 já é o padrão!

Como eu disse o meu destino era a impressora -. Por isso eu tinha que fazer o mesmo para o controle que está sendo impresso

Onde mais posso definir este tamanho de fonte padrão? De qualquer forma, agora tenho de renderização perfeita de pixel no Windows XP e Windows 7, e diferem apenas pelo cleartype anti-aliasing diferenças.

Nota:. UseLayoutRounding não faz parte da minha solução - mas eu sempre usá-lo em meu controle raiz também

As fontes padrão são diferentes

Faça um botão WPF

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

e código por trás:

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

Executar este em cada sistema operacional e você vai ver que as fontes padrão para XP e Windows 7 são diferentes.

padrão da fonte para XP é “Tahoma” size 11

padrão da fonte para o Windows 7 é “Segoe UI” tamanho 12

Diferentes versões do Windows têm diferentes tipos de letra padrão (também diferentes versões dos mesmos tipos de letra) e diferentes motores de renderização de fontes - como resultado, o tamanho do texto é diferente entre os sistemas

.

Você pode tentar definir o tipo de letra para a mesma fonte e ver como ele funciona, talvez tentar várias fontes para verificar onde a diferença é menor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top