Question

J'ai développé une interface graphique pour une application aléatoire à l'aide de WPF.J'ai un tas de sortir de la zone de contrôles WPF posé sur la fenêtre de l'application.Je n'ai pas personnalisé quoi que ce soit, de ne pas utiliser des bitmaps, etc.

Lors de l'exécution de ma demande et de zoom à l'aide de la Loupe application dans Windows 7 (Win key + Plus key, le amplifié interface graphique montrant pixels.Je suis probablement mal, parce que je ne peux pas l'expliquer autrement, mais ce n'est pas WPF censé fournir vecteur comme contrôle de rendu?

Merci pour la participation à la discussion.

Bonus De Lecture

Était-ce utile?

La solution

De retour lorsque Vista expédié tout d'abord, et quand WPF était sur la version 3.0, le zoom, grâce à la loupe serait effectivement faire vectoriel de mise à l'échelle.

Cet arrêté de travailler quand WPF 3.5 service pack 1 est expédié.(Il a travaillé en 3.5 sp1 avant.) La raison pour laquelle il a travaillé avant, alors c'est que le DWM (Gestionnaire de fenêtres du Bureau) - la partie de Windows chargé de présenter tout ce que vous voyez sur l'écran - utilise MILCORE.DLL faire son rendu.La Version 3.0 et 3.5 de WPF également utilisé ce même composant de rendu, cela signifiait que toutes les WPF contenu était natif de contenu, pour ainsi dire.(En fait, sur Windows XP, qui n'a pas la DWM, MILCORE.DLL est quelque chose que WPF met sur votre système pour son propre avantage.Mais il est intégré dans Vista et Windows 7.) Lorsque WPF a été à l'aide de MILCORE.DLL de rendre sur Vista, tous les effets appliqués par le gestionnaire de fenêtrage comme la mise à l'échelle s'appliquerait également à la façon dont vous voulez WPF - il a vraiment mise à l'échelle sans pixelating.

Malheureusement, ce n'est plus le cas.Et la raison en est que WPF commencé à ajouter de nouvelles fonctionnalités de rendu.En 3.5 sp1, la nouvelle fonctionnalité en question a été personnalisés pixel shaders.Pour permettre cela, Microsoft a dû sortir une mise à jour pour le MIL.(Les Médias Couche d'Intégration - le bit qui ne le rendu réel.) Cependant, ils n'étaient pas vraiment en position de mise à jour MILCORE.DLL parce que cela fait partie de Windows c'est la manière dont tout ce que vous voyez sur l'écran est à l'écran.Publier une nouvelle version de MILCORE.DLL effectivement les moyens de pousser une mise à jour de Windows.Le calendrier de sortie pour Windows est indépendant de celui de .NET, et donc la seule façon de le WPF équipe pourrait raisonnablement ajouter de nouvelles fonctionnalités a été expédier un nouveau MIL.(En théorie, ils auraient pu le faire via Windows Update, mais depuis WPF est maintenant détenue par une autre division de Microsoft que Windows, ce genre de chose ne semble pas se produire dans la pratique.)

Comme de .NET 3.5 sp1, le MIL est dans une autre DLL appelée wpf_gfx_vXXXX.dll où vXXXX est le numéro de version.Dans .NET 4.0, il est wpf_gfx_v0400.dll.

L'avantage est que WPF obtient pour ajouter de nouvelles fonctionnalités de rendu avec chaque nouvelle version, sans avoir besoin de Windows lui-même à être mis à jour.L'inconvénient est que WPF, le rendu est plus aussi étroitement intégré avec Windows comme il a été brièvement en arrière quand Vista est expédié.Et le résultat est, comme vous l'avez vu, cette loupe est pas autant de plaisir qu'auparavant.

Autres conseils

La loupe de l'application implémente sa propre image agrandie de rendu, de sorte que c'est pourquoi vous voyez pixels.WPF utilise des graphiques de vecteur, mais dans cette situation, il n'est pas l'application WPF qui est lui-rendu de l'image zoomée.

Si vous utilisez quelque chose comme Snoop vous pouvez voir le zoom et mise à l'échelle WPF graphiques vectoriels rendu dans l'action.

Je suppose, Windows 7 loupe prend un instantané de l'application réelle sur l'écran de l'INTERFACE utilisateur, puis le magnifie lui-même (ne pas faire un cas particulier pour les applications WPF).Bien sûr, ce qu'il peut accès est uniquement les pixels, pas le vecteur graphique qui fonctionne en arrière-scène.

Le Windows-7-Loupe est à base de pixels, mais il y a une différence dans la loupe de mode selon que l'un Aéro-le thème est active ou non.

  • avec Areo thème le zoom est pixélisé.
  • sans Areo thème le zoom est lissée (floue).

Seulement avec Areo thème d'autres points de Vue (à l'exception de "Ancrée") sont sélectionnables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top