2010-12-03 3 views
3

Possible en double:
C# WPF resolution independancy?WPF Résolution Indépendance

Quelle est la différence entre la résolution de l'écran et le système DPI par rapport à l'indépendance de la résolution WPF.
Modification de ce qui entre les deux conserve la même taille de fenêtre dans WPF qui était auparavant impossible dans User32? Le livre que je lis "Pro WPF dans C Sharp" dit que si nous créons un bouton de 1 pouce en 96 DPI, puis plus tard changer le DPI à 120, en raison de plus de densité de pixels, le bouton deviendrait petit (en winforms) .Mais j'ai essayé ça et je peux voir que dans les deux cas la taille du bouton reste la même!

Pourquoi est-ce vrai?

Répondre

0

En réalité, l'indépendance dite de résolution de WPF ne vous permet pas de faire quoi que ce soit que vous ne pouviez pas faire auparavant dans Win32. C'est juste que c'était beaucoup plus de travail avant. Le seul véritable changement ici est l'effort de développement - il n'y a pas de changement dans les capacités fondamentales. (Et c'est vrai pour tout ce qui est dans WPF Si vous avez plusieurs années de développement à perdre, vous pouvez faire tout ce que WPF fait en programmant directement sur les API DirectX ...)

WPF prend automatiquement en compte la configuration PPP nominale . Dans Win32, si vous voulez que votre application soit sensible au DPI nominal, vous devez écrire du code additionnel pour y arriver, et vous devez faire face à d'horribles problèmes de mise en page si vous voulez éviter des problèmes comme du texte recadré avec certains DPI . (Bien que maintenant nous ayons le rendu de texte de style GDI32 dans .NET 4, vous pouvez réintégrer tous ces problèmes dans les applications WPF ...)

Donc la réponse à votre question est essentiellement: pas de différence. WPF rend beaucoup plus facile la prise en compte du DPI, mais il n'autorise aucun nouveau comportement ici. Fondamentalement, WPF rencontre exactement les mêmes problèmes que les applications classiques Win32 pour la simple raison qu'il a accès à exactement les mêmes informations que les applications classiques Win32. Comme l'indiquent les pages liées aux autres réponses, Windows n'a généralement aucune idée de ce qu'est vraiment le DPI. La plupart du temps, il vous dira que le moniteur est 96dpi. Eh bien, j'ai 3 écrans attachés à mon ordinateur, et Windows rapporte 96dpi pour chacun d'eux, même si aucun d'entre eux est vraiment 96dpi, et ils ne sont même pas tous les mêmes dpi en réalité. La ligne du bas est: Windows n'a généralement aucune idée de ce que le vrai DPI de votre écran est. WPF ne peut rien faire pour surmonter cela. S'il existait un moyen pour WPF de découvrir le vrai DPI, les applications Win32 seraient également capables de le découvrir.