2012-05-31 14 views

Odpowiedz

79

Co powiesz na to?

var bounds = Window.Current.Bounds; 

double height = bounds.Height; 

double width = bounds.Width; 
+0

To też działa. Dzięki Kriszna! :) –

+4

Użyj tego. Nie zakładaj, że jesteś na głównym ekranie, jak to zrobiono w odpowiedzi Md –

+0

Good Point @RobertLevy. –

2

Czy używasz XAML? Jeśli tak, to nie ma znaczenia. Użyj kontrolki Grid. Zapełni całą dostępną przestrzeń. Przeczytaj Jerry's blog, dlaczego warto używać xaml do rozwoju WinRT.

+0

Mam dwa rzędy, jeden z wysokością 70 i inny z *. Mam textBox, który znajduje się w drugim rzędzie. Chcę, aby pole tekstowe zmieniło jego wysokość zgodnie z rozdzielczością. –

+1

domyślnie styl TextBox wypełnia cały podany obszar. To jest styl Silverlight, ale nadal powinien być stosowany lub możesz przypisać ten styl http://msdn.microsoft.com/en-us/library/cc645061%28v=VS.95%29.aspx –

3

widocznie nie mam wystarczająco dużo rep odpowiedzenia na stanowiskach jeszcze, ale w odniesieniu do @ odpowiedź Kryszny, może warto zauważyć, że jego rozwiązanie wymaga:

using Windows.UI.Xaml; 

prawdopodobnie nie problem dla większości z was, ale w moim przypadku (próba uchwycenia rozdzielczości wykonania aplikacji z zaimportowanej biblioteki), nie było jej domyślnie.

nadzieję, że to pomoże ktoś inny ...

+0

Nie ma pakietu Windows.UI.XAML. jak mogę z niego korzystać? –

6

Prawdopodobnie najlepszym rozwiązaniem dla aplikacji obsługujących DirectX jednak zastosowanie do wszystkich innych rodzajów aplikacji metro jest:

http://blogs.microsoft.co.il/blogs/tomershamam/archive/2012/07/24/get-screen-resolution-in-windows-8-metro-style-application.aspx

PS: No dalej, pobieranie rozmiaru okna w celu określenia rozdzielczości ekranu? A co z trybami snapowania/wypełniania? Ten świat jest tak zepsuty: -/

+0

Wysokość nie zmienia się w trybach przyciągania/wypełniania;) –

+0

I dzięki. W każdym razie, udało mi się to do pracy bez ustawiania wysokości. :) –

13

Uzyskanie granic bieżącego okna jest łatwe. Ale powiedz, jeśli chcesz ustawić duży rozmiar czcionki dla większego ekranu (rozdzielczość jest taka sama jak w przypadku urządzenia 10 ", ale ekran ma 27"), to nie pomoże. Patrz: Scaling to different screens Użyłem następującej metody, aby wykryć styl czcionki o rozmiarze ekranu & odpowiednio.

  void detectScreenType() 
    { 
     double dpi = DisplayProperties.LogicalDpi; 
     var bounds = Window.Current.Bounds; 
     double h; 
     switch (ApplicationView.Value) 
     { 
      case ApplicationViewState.Filled: 
       h = bounds.Height; 
       break; 

      case ApplicationViewState.FullScreenLandscape: 
       h = bounds.Height; 
       break; 

      case ApplicationViewState.Snapped: 
       h = bounds.Height; 
       break; 

      case ApplicationViewState.FullScreenPortrait: 
       h = bounds.Width; 
       break; 

      default: 
       return; 
     } 
     double inches = h/dpi ; 
     string screenType = "Slate"; 
     if (inches < 10) 
     { 
      screenType = "Slate"; 
     } else if (inches < 14) { 
      screenType = "WorkHorsePC"; 
     } 
     else 
     { 
      screenType = "FamilyHub"; 
     } 
     ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings; 
     localSettings.Values["screenType"] = screenType; 
    } 
+0

Daje rozmiar okna, a nie pełny ekran, chyba że działa w trybie pełnoekranowym. – cyanide

Powiązane problemy