我经常搜索我的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中获得屏幕分辨率,那么我如何根据不同的屏幕分辨率缩放字体。其他公司程序员为此问题做了什么? 有可能帮助我吗? 抱歉英语不好 谢谢。
答案 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;