2012-05-31 2 views

ответ

79

Как насчет этого?

var bounds = Window.Current.Bounds; 

double height = bounds.Height; 

double width = bounds.Width; 
+0

Это тоже работает. Спасибо Кришне! :) –

+4

Используйте это. Не предполагайте, что вы находитесь на основном экране, как это сделано в ответе Мада –

+0

Good Point @RobertLevy. –

2

Вы используете XAML? Если так, это не имеет значения. Используйте элемент управления сеткой. Он заполнит все свободное пространство. Прочитайте Jerry's blog, почему вы можете использовать xaml для разработки WinRT.

+0

У меня есть два ряда, один с высотой 70 и другой с *. У меня есть textBox, который находится во второй строке. Я хочу, чтобы текстовое поле изменило его высоту в соответствии с разрешением. –

+1

по умолчанию стиль TextBox будет заполнять всю область, в которой он задан. Это стиль Silverlight, но он все равно должен применяться, или вы можете назначить этот стиль http://msdn.microsoft.com/en-us/library/cc645061%28v=VS.95%29.aspx –

3

, видимо, я не хватает респ отвечать на сообщения пока нет, но в отношении @ ответ Кришны, это может быть стоит отметить, что его решение требует:

using Windows.UI.Xaml; 

, вероятно, не проблема для большинства из вас, но в моем случае (попытка захватить разрешение исполняемого приложения из импортированной библиотеки), он не был там по умолчанию.

надеюсь, что это помогает кто-то еще ...

+0

Доступен пакет Windows.UI.XAML. как я могу его использовать? –

6

Возможно, лучший вариант для DirectX с поддержкой приложений, однако, применимы ко всем другим видам приложений метро является:

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

P.S. C'mon, получив размер окна, чтобы определить разрешение экрана? Как насчет режимов съемки/заполнения? Этот мир настолько разбит: -/

+0

Высота не изменяется в режимах запирания/заполнения;) –

+0

И спасибо. В любом случае, я заставил его работать, не устанавливая высоту. :) –

13

Получение границ текущего окна очень просто. Но скажите, хотите ли вы установить большой размер шрифта для большего экрана (разрешение такое же, как у 10-дюймового устройства, но на экране 27 "), это не поможет. Refer Scaling to different screens Я использовал следующий метод для определения размера экрана & изменить стиль шрифта текстового блока соответствующим образом.

  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

Это дает размер окна, а не полный размер экрана, если только он не работает в полноэкранном режиме. – cyanide

Смежные вопросы