WP7 Skalierbarkeit der Silverlight-App-Skalierbarkeit

8

Ich schreibe gerade eine Reihe von WP7-Apps, die je nach Anzeigegerät absolute Größen benötigen. Was das bedeutet, dass die App-Größe 656 (w) mal 480 (h) sein muss, was perfekt für WP7 mit sowohl shell:SystemTray.IsVisible="True" als auch shell:ApplicationBar IsVisible="True" ist. Von einer möglichen 800 x 480, beide verwendeten Bars nehmen 144, also bin ich gut auf dieser Front.

Auf einem PC würde ich eine größere Version dieser Größe wie 720x540 verwenden.

Wenn jedoch iPhone- & gt; IPAD einen Hinweis auf mögliche Einnahmequellen für MSFT gibt (sowie Ballmers Reinvestition in das Tablet-Geschäft), werde ich davon ausgehen, dass wir ein Tablet sehen werden. Größe Einheit kommt früh genug für das Betriebssystem WP7 heraus.

Es kann auch eine 400x240 Auflösung von WP7 geben.

Was ich möchte, ist, dass meine Apps sofort für unterschiedlich große Geräte verfügbar sind, basierend auf den oben genannten Dimensionen (656 (w) mal 480 (h) oder eine skalierte Version davon) - anstatt nur zu müssen Ändern Sie eine einzelne Gruppe von Werten, um eine App erneut zu veröffentlichen. Hinweis : Ich verwende kein <Grid/> oder <StackPanel/> - und ich kann nicht. Jedes einzelne Ding in der App ist absolut positioniert und dies ist absichtlich.

Die Frage ist also - gibt es einen Wert, den ich über die Bildschirmauflösung des Geräts lesen kann, auf dem meine App läuft? Ich habe mir die Referenz , konnte aber nichts dergleichen finden.

    
Todd Main 12.08.2010, 05:55
quelle

3 Antworten

7

Sie können die verfügbare Anzeigegröße mit folgenden Optionen bestimmen: -

%Vor%

Diese bleiben trotz der Ausrichtung gleich. Die Verwendung der Dimensionen von RootVisual würde wahrscheinlich genauso gut funktionieren, aber wenn der RootVisual aus bizarren Gründen eine feste Größe hat, dann wird das nicht funktionieren.

Die oben genannten Eigenschaften ActualWidth und ActualHeight dienen speziell dazu, die Anwendung der Größe des vom Host-Gerät bereitgestellten Ansichtsfensters zu informieren.

    
AnthonyWJones 12.08.2010, 11:58
quelle
3

Soweit ich höre, wird auf Tablet-Geräten (slate) eine Vollversion von Windows 7 (nicht Windows Phone 7) ausgeführt, allerdings mit einer zusätzlichen Software-Ebene für bessere / einfachere / einfachere Verwendung im Slate-Kontext.

WP7-Geräte kommen mit HVGA-Bildschirmen (480x320) heraus, und Microsoft hat ausdrücklich erklärt, dass es in Zukunft keine anderen Größen geben wird. (Sie haben gelernt, mehrere Bildschirmgrößen zu unterstützen.) Das bedeutet, dass Sie sich keine Gedanken über 400x240 machen müssen.

Als Antwort auf Ihre eigentliche Frage:
Sie können die Größe des Bildschirms durch Zugriff auf die RenderSize der RootVisual , wie folgt:

%Vor%

Wenn das Gerät gedreht wird, werden die Abmessungen immer noch im Hochformat angezeigt.

Bitte beachten Sie. Dies basiert auf meinen Tests im Emulator & amp; nicht auf verschiedenen Geräten mit verschiedenen Bildschirmgrößen getestet.

    
Matt Lacey 12.08.2010 08:50
quelle
1

Dies ist möglich, indem Sie einen Canvas der Größe verwenden, für den Sie arbeiten möchten, und dann einen Zoom anwenden, indem Sie den Wert von ScaleX und ScaleY ändern. Der beste Weg, dies zu tun, ist die Datenbindung an eine Eigenschaft, die zur Laufzeit berechnet wird. Aber denken Sie daran, dass Sie wahrscheinlich das richtige Verhältnis beibehalten werden, also skalieren Sie X und Y um den gleichen Betrag. Wenn der Wert kleiner als 1 ist, wird er verkleinert und er wird vergrößert, wenn der Wert größer als 1 ist. Und bedenke auch, dass Pixel-basierter Stuff pixeliger wird.

%Vor%     
Wouter Janssens 12.08.2010 06:24
quelle

Tags und Links