35

我想知道屏幕分辨率,以便我可以根据 Windows 8 应用程序中的分辨率设置元素的高度。

4

5 回答 5

80

这个怎么样?

var bounds = Window.Current.Bounds;

double height = bounds.Height;

double width = bounds.Width;
于 2012-05-31T06:56:26.173 回答
13

获取当前窗口的边界很容易。但是如果你想为更大的屏幕设置一个大的字体大小(分辨率与 10 英寸设备相同,但屏幕是 27 英寸),这将无济于事。请参阅缩放到不同的屏幕 我使用以下方法来检测屏幕大小并适当地更改文本块字体样式。

         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;
    }
于 2013-04-15T13:25:27.577 回答
6

然而,适用于所有其他类型的 Metro 应用程序的支持 DirectX 的应用程序的最佳选择可能是:

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

PS来吧,获取窗口大小来确定屏幕分辨率?捕捉/填充模式呢?这个世界太破碎了:-/

于 2012-08-14T14:49:21.800 回答
3

显然我还没有足够的代表来回复帖子,但关于@Krishna 的回答,可能值得注意的是,他的解决方案需要:

using Windows.UI.Xaml;

对你们大多数人来说可能不是问题,但在我的情况下(试图从导入的库中获取执行应用程序的解决方案),默认情况下它不存在。

希望这对其他人有帮助...

于 2012-07-18T21:45:26.980 回答
2

你在使用 XAML 吗?如果是这样也没关系。使用网格控件。它将填满所有可用空间。阅读Jerry 的博客,了解您可能希望使用 xaml 进行 WinRT 开发的原因。

于 2012-05-31T06:09:16.800 回答