2010-08-12 5 views
8

Je suis en train d'écrire un certain nombre d'applications WP7 qui nécessitent un dimensionnement absolu, en fonction du périphérique d'affichage. Ce qui signifie que la taille de l'application doit être de 656 (w) par 480 (h), ce qui est parfait pour WP7 avec à la fois shell:SystemTray.IsVisible="True" et shell:ApplicationBar IsVisible="True". D'un possible 800 x 480, ces deux barres utilisées prennent 144, donc je suis bon sur ce front.WP7 Silverlight App Évolutivité Évolutivité

Sur un PC, j'utiliserais une version plus grande de cette taille, comme 720x540.

Cependant, si iPhone-> iPad est une indication de revenus potentiels pour MSFT (ainsi que Ballmer réinvestissant dans le secteur des tablettes), je vais faire l'hypothèse que nous verrons une tablette ... unité de taille sortent assez tôt pour le système d'exploitation WP7.

En outre, il peut y avoir une résolution 400x240 de WP7 pour sortir. Je souhaite que mes applications soient immédiatement disponibles pour les appareils de différentes tailles, en fonction des dimensions ci-dessus (656 (w) par 480 (h) ou d'une version mise à l'échelle) - plutôt que de devoir Il suffit de changer un seul ensemble de valeurs pour rééditer une application. Note: Je n'utilise pas un <Grid/> ou <StackPanel/> - et je ne peux pas. Chaque chose dans l'application est absolument positionnée et cela est fait exprès.

Donc la question ici est - y a-t-il une valeur que je peux lire sur la résolution de l'écran de l'appareil mon application fonctionne? J'ai regardé à travers le reference, mais je n'ai rien trouvé de pareil.

Répondre

7

Vous pouvez déterminer la taille d'affichage disponible avec: -

var width = Application.Current.Host.Content.ActualWidth; 
var height = Application.Current.Host.Content.ActualHeight; 

Celles-ci restent les mêmes, malgré l'orientation.L'utilisation des dimensions du RootVisual fonctionnerait probablement aussi bien mais si pour la raison de bizare le RootVisual a une taille fixe alors cela ne fonctionnera pas.

Les propriétés ActualWidth et ActualHeight ci-dessus sont spécifiquement conçues pour informer l'application de la taille de la fenêtre d'affichage fournie par le périphérique hôte.

1

Cela est possible en utilisant un canevas de la taille pour laquelle vous souhaitez travailler, puis appliquer un zoom en modifiant la valeur de ScaleX et ScaleY. La meilleure façon d'y parvenir est d'utiliser la liaison de données avec une propriété calculée lors de l'exécution. Mais gardez à l'esprit que vous garderez probablement le bon ratio, donc mettez à l'échelle le X et Y le même montant. Lorsque la valeur est inférieure à 1, elle sera réduite et elle augmentera lorsque la valeur sera supérieure à 1. Et gardez également à l'esprit que les pixels seront plus pixelisés.

<Canvas x:Name="canvas" Background="#FFFFFFFF" Width="656" Height="480"> 
    <Canvas.RenderTransform> 
     <ScaleTransform ScaleX="1" ScaleY="1"/> 
    </Canvas.RenderTransform> 
    <Button Content="OK"/> 
</Canvas> 
3

D'après ce que j'entends, tablette appareils de style (ardoise) se déroulera une version complète de Windows 7 (et non Windows Phone 7) mais avec une couche logicielle addtional sur le dessus pour mieux/plus simple/utilisation plus facile dans l'ardoise le contexte.

Les périphériques WP7 sortiront avec des écrans HVGA (480x320) et Microsoft a explicitement déclaré qu'il n'y aura plus d'autres tailles dans le futur. (Ils ont appris la leçon d'essayer de prendre en charge plusieurs tailles d'écran.) Cela signifie que vous n'aurez pas à vous soucier de 400x240.

En réponse à votre question réelle:
Vous pouvez obtenir la taille de l'écran en accédant à la RenderSize du RootVisual, comme ceci:

var size = App.Current.RootVisual.RenderSize; 

var msg = string.Format("Height: {0}\r\nWidth: {1}", size.Height, size.Width); 

MessageBox.Show(msg, "size", MessageBoxButton.OK); 

Si l'appareil est mis en rotation, il donne encore les dimensions de une orientation portrait.

Veuillez noter. Ceci est basé sur mes tests dans l'émulateur & non testé sur différents appareils avec des écrans de taille différente.

Questions connexes