2010-11-03 5 views
11

Est-ce que quelqu'un sait quelles unités de mesure sont utilisées par Silverlight/WFP? Par exemple, si je crée un nouveau bouton et que sa hauteur est de 150, est-ce 150 pixels? points? millimètres?Quelles sont les unités de mesure utilisées par Silverlight et WPF?

Je conçois toutes mes applications dans Adobe Illustrator avant de procéder au codage, et bien que j'essaie de tout paramétrer aux dimensions de mon fichier Illustrator, l'application Silverlight est généralement plus grande.

Répondre

16

la documentation MSDN indique que la propriété FrameworkElement.Height (pour Silverlight) fait référence à:

La hauteur, en pixels, de l'objet

Cependant, for WPF fait référence à:

un dispositif indépendant unité (1/96ème pouce) mesure

Donc, pour répondre à votre question ... pixels pour unités indépendantes des périphériques Silverlight, pour WPF.

+0

Pas de pixles. Unités indépendantes du dispositif. –

+0

Je vais devoir jouer avec mes paramètres dans Illustrator. J'ai utilisé des pixels pour tout sauf du texte. Voici quelques informations supplémentaires concernant WPF vs Silverlight http://msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx – Quentamia

+1

FYI: Microsoft utilise 96 ppp. Adobe Illustrator utilise 72 ppp. – Quentamia

1

Ils sont Unités indépendantes du périphérique.

Vous trouverez des explications plus détaillées here.

+0

Non Indépendant. Indépendant. – Grozz

+0

Merci. J'ai fait la correction. –

1

La documentation se réfère aux pixels, cependant ce sont des pixels où il y a 96 pixels par pouce. Une ligne de largeur 96 lorsque l'affichage sur un écran de 120 DPI sera de 120 pixels réels de l'appareil. De même, une telle ligne tracée sur une sortie d'imprimante ayant 600 DPI aura une longueur de 600 pixels.

24

Bien que dans théorie, 1 unité dans WPF est 1/96e de pouce, ce qui est souvent pas le cas en pratique.

C'est généralement vrai lors de l'impression. Mais c'est rarement vrai à l'écran. La raison en est que Windows connaît presque toujours la vraie résolution d'une imprimante, mais ne connaît presque jamais la vraie résolution d'un écran.

Par exemple, j'ai trois écrans attachés à mon ordinateur. Windows pense qu'ils ont tous une résolution de 96 pixels par pouce. En fait, ils ne le font pas. Deux d'entre eux ont une résolution de 101 pixels par pouce, et un a une résolution de 94 pixels par pouce. (Parce que Windows n'a aucun moyen de travailler les vraies résolutions pour lui-même, et je ne l'ai pas dit.) La fiction qu'ils ont tous la même taille de pixel est proche de la vérité, et s'avère être une fiction pratique. Donc, quand je crée, disons, un Rectangle dans WPF avec Largeur et Hauteur tous les deux réglés sur 96, la taille du Rectangle dépend de l'écran sur lequel il apparaît. Windows pense que les trois écrans ont une résolution de 96 pixels par pouce, ce qui rend le rectangle de 96 pixels de hauteur et de largeur, quel que soit l'écran sur lequel il apparaît. Cela fera apparaître 0,95 pouces de hauteur sur deux des écrans, et 1,02 pouces de haut sur le troisième. Donc, en pratique, cela signifie que les unités de WPF sur mon ordinateur sont soit 1/100ème de pouce, soit 1/94ème de pouce en pratique. (En d'autres termes, en pratique, la taille d'une unité dans WPF correspond exactement à la taille de 1 pixel de ma configuration particulière, quelle que soit la taille des pixels.

Je pourrais changer cela. Je pourrais reconfigurer Windows - je pourrais lui dire la résolution réelle de tous les 3 écrans, auquel cas les tailles d'unités WPF nominales et réelles coïncideraient. Ou je pourrais mentir - je pourrais prétendre que j'ai des écrans de 200 pixels par pouce, dans ce cas tout serait énorme ...

Le problème de base ici est qu'il n'y a pas de façon standard pour l'ordinateur de découvrir la vraie taille des pixels physiques sur l'écran, et très peu de gens prennent la peine de le configurer à la main. (Et en fait, vous pouvez causer des problèmes en le configurant correctement, car beaucoup de logiciels ne se comportent pas correctement quand vous le faites.) Donc la majorité des ordinateurs Windows ne signalent pas correctement les tailles de pixels physiques à WPF - ils peuvent t parce qu'ils ne savent pas.

Par conséquent, il n'y a pas de réponse fiable à la question - 1 unité dans WPF pourrait être à peu près n'importe quoi à l'écran. (En pratique, la plupart du temps, il s'avère être 1 pixel, simplement parce que si vous ne dites rien à Windows, il est par défaut de supposer que vos écrans ont des pixels qui mesurent 1/96ème de pouce, ce qui est La même chose que pour une unité WPF, et pour la plupart des écrans de bureau, il est fort probable que ce soit une bonne idée, mais ce n'est pas universel. une résolution d'écran nominale différente, et 1 unité WPF correspondra à un peu plus de 1 pixel physique - environ 1,2 en fait.)

Avec les imprimantes, tout est beaucoup plus prévisible. Les imprimantes sont invariablement capables de rapporter leurs résolutions correctement. Donc, si vous imprimez quelque chose qui fait 96 unités WPF de haut, vous pouvez être sûr qu'il sera de 1 pouce de haut.

+0

Bonne description. J'ai un double affichage avec un ordinateur portable. L'ordinateur portable est un Vaio VPCF2 avec 134 pixels physiques par pouce. Le moniteur externe est un HP 2310m avec 95,7 ppp. Si je place une largeur d'étiquette à 96, il apparaît comme 1,25 "sur le HP.Si je le mets à 134, il apparaît comme 1,25" sur le Vaio. Je dois donc augmenter mon ppi attendu de 0,8 pour le faire apparaître exactement à 1 "sur mon moniteur, et cela dépend du moniteur sur lequel je m'attends à ce qu'il apparaisse, mais en fait, je ne m'en soucie pas vraiment. Je pars avec 96 après tout comme "assez proche". – cod3monk3y

Questions connexes