2010-10-01 4 views
0

J'ai une application qui se trouve sur un périphérique mobile. Je déplace des résolutions de mon application de 240W x 320L à 640W X 480L.Comment calculer la modification de la résolution d'écran

J'ai un groupe de colonnes qui ont leur largeur en pixels (disons 55 par exemple). J'ai besoin de convertir cela à la nouvelle résolution.

"Facile", je pensais 640/240 = 2 2/3. Donc, je prends juste 55 * 2.6666667 et c'est ma nouvelle largeur.

Hélas, cela n'a pas fonctionné. Mes colonnes (toutes ensemble) sont plus grandes que la taille de mon écran maintenant.

J'ai essayé 55 * 2 et c'est trop petit. Je suis sûr que je peux y arriver avec un procès une erreur, mais je veux savoir un rapport exact.

Alors, qu'est-ce qui me manque? comment puis-je calculer mes nouvelles largeurs de colonnes (autres que par essais et erreurs).

Répondre

2

Je pense que votre logique est bonne, mais peut-être avez-vous eu des erreurs d'arrondi? Si vous voulez vous assurer que la largeur totale est inférieure à la résolution de l'écran, après avoir multiplié par le facteur d'échelle, vous devez toujours arrondir à l'entier le plus proche pour obtenir la largeur en pixels. De plus, si vos colonnes ont des bourrelets, des bordures ou d'autres espaces entre elles, vous devrez également en tenir compte.

Si vous pouvez exécuter sur un environnement de bureau, je sais qu'il existe des outils de type «règle de pixel» pour mesurer réellement les choses à l'écran, vous pouvez rechercher Google pour eux.

2

L'écran DPI change lorsque la résolution change. Donc vous devez en tenir compte.
Vérifiez this link about DPI Aware apps et effectuez une recherche en fonction de votre plate-forme (native ou CF)

+0

Le DPI ne serait-il pas important seulement si nous étions préoccupés par la taille physique réelle des colonnes? Il semble que l'OP travaille juste dans l'espace des pixels ici. – WildCrustacean

2

L'arrondi est votre problème; Supposons que vous avez 24 colonnes de 10 pixels sur l'affichage de 240 pixels. Vous calculez la nouvelle largeur: 10 * 2.667 = 27 de sorte que la largeur totale soit égale à: 648> 640. Oups ...

Pour ce faire, vous devez redimensionner l'emplacement absolu de la colonne. C'est-à-dire si le numéro de colonne k commence sur x-coordonnée = X alors après la mise à l'échelle, il devrait commencer par arrondir (X * 2.667). Après cette soustraction, arrondissez le côté droit X du côté gauche arrondi X pour obtenir la largeur. De cette façon, vous arrondissez les largeurs vers le bas et certaines vers le haut, mais la largeur totale restera à l'intérieur de vos limites.

Questions connexes