在Windows 8.1 Universal中获得分辨率

时间:2016-04-14 12:20:46

标签: c# windows-8.1-universal

我经常搜索我的Windows 8.1 Universal应用程序的分辨率 我知道我们可以通过以下方式获得屏幕的高度和宽度:

var screenHeight = Window.Current.Bounds.Height;
var screenWidth = Window.Current.Bounds.Width;   

但这不是解决方案。我想获得价值" 1366 * 768"或" 1920 * 1080"。我也知道ResolutionScale:

var scaleFactor = DisplayInformation.GetForCurrentView().ResolutionScale;

它总是100%回报给我。它无助于我将宽度和高度转换为屏幕分辨率。我需要在 Windows 8.1 Universal 中获得解析。这对我来说非常重要 所以,如果我无法在Windows 8.1中获得屏幕分辨率,那么我如何根据不同的屏幕分辨率缩放字体。其他公司程序员为此问题做了什么? 有可能帮助我吗? 抱歉英语不好 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以通过这种方式获得每逻辑英寸的像素数:

    private void YourForm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Tab)
        {
            if (e.Modifiers == Keys.Shift)
                this.ProcessTabKey(false);
            else
                this.ProcessTabKey(true);
        }
    }

它沿着显示器的y轴获得每英寸的原始点数(DPI),如果有两个显示器处于重复模式,则返回0。

要获得物理屏幕尺寸,您可以使用:

 double dpi = DisplayInformation.GetForCurrentView().RawDpiY;

获取像素试试这个:

double screenDiagonal = Math.Sqrt(Math.Pow(screenWidth / dpi, 2) + Math.Pow(screenHeight / dpi, 2));

这适用于WP8.1和UWP。对于Windows 8.1 Store Apps,请尝试使用ResolutionScale:

var scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
double w=screenWidth*scaleFactor;
double h=screenheight*scaleFactor;