Как определить ориентацию экрана в C # для мобильных устройств? - PullRequest
4 голосов
/ 08 ноября 2008

Как узнать в C # -приложении, в каком направлении ориентирован экран мобильного устройства? (т.е. горизонтальный или вертикальный).

Ответы [ 4 ]

3 голосов
/ 08 ноября 2008

В Microsoft.WindowsMobile.Status есть класс, который отслеживает все виды свойств вашего устройства. Помимо того, что вам нужно, DisplayRotation, он также содержит свойства о покрытии телефона, Nr пропущенных звонков, следующей встречи и многое другое. См. msdn для получения дополнительной информации.

Вы также можете добавить обработчик событий, чтобы получать уведомления об изменениях этих свойств.

2 голосов
/ 08 ноября 2008

Добавьте ссылку на Microsoft.WindowsCE.Forms в ваш проект. Тогда вы можете сослаться на Microsoft.WindowsCE.Forms. SystemSettings.ScreenOrientation свойство, которое даст вам то, что вам нужно.

Кстати, вы можете установить это свойство, чтобы его можно было использовать и для ориентации экрана.

1 голос
/ 07 июня 2009

Вы должны добавить 2 ссылки в проект: Microsoft.WindowsMobile Microsoft.WindowsMobile.Status

тогда вы можете использовать этот код для определения ориентации:

int orientation=Microsoft.WindowsMobile.Status.SystemState.DisplayRotation;
if(orientation== 90 || orientation==-90 || orientation==270) //Landscape is 90 or -90 or 270
{
    //your code;
}
else
{
    //your code;
}
0 голосов
/ 08 ноября 2008

Просто угадаю, но моя первая попытка будет:

var rect = System.Windows.Forms.Screen.PrimaryScreen.Bounds;
// or var rect = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;

var ratio = rect.Width / rect.Height;

if (ratio == 1.0) // square screen.
if (ratio > 1.0) // landscape.
if (ratio < 1.0) // portrait.
...