xaml – 如何在uwp应用程序上正确启用dpi-scaling
我已经创建了我的第一个UWP应用程序.这是一个
Windows 8.1 UWP应用程序,它将帮助我在大学安排当前系统非常糟糕的课程.我一直在用我的Windows 10桌面计算机和默认系统缩放(100%)的1080p监视器进行处理.我部署了测试版本并将其安装在笔记本电脑上.笔记本电脑也是Windows 10和1080p,但屏幕较小,因此系统缩放设置为125%.我的问题是,而不是这个更高的缩放因子使我的应用程序具有更大的功能,它做相反的事情并缩小应用程序中的所有内容.
以不同比例因子运行时,我的笔记本电脑有两个屏幕截图.第一个是100%,系统上的所有东西都太小了. 请注意,左侧的导航栏正好是44像素宽,作为设计.现在,在下一个屏幕截图中,笔记本电脑以125%的系统缩放率运行(我在拍摄屏幕截图之前已经注销,因此缩放应该已经完全更新).我们应该期望导航栏宽55像素. 在这里,您可以看到应用程序中的区域实际上比以前更小.这里的导航栏宽约37像素,而我预期的55.我在如何扩展UWP应用程序时是否遗漏了一些内容? 我现在没有整个xaml代码,因为我在笔记本电脑上,但我知道导航栏是网格的一部分,看起来像这样.此网格是运行应用程序的整个网格,导航栏是第一列. <Grid x:name="gridOverall"> <Grid.ColumnDefinitions> <ColumnDefinition Width="44"/> <ColumnDefinition Width="200"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> ... </Grid> 我认为它可能是应用程序清单中的启用扩展选项或其他东西,但我找不到类似的东西.我期望这样的问题出现在我使用的图像中,因为我还没有包含更高分辨率的选项,但我没想到这会发生在xaml中定义的布局元素. 任何人都可以对可能发生的事情有所了解吗?这是我的第一个完整的应用程序,我有点迷失. 解决方法
Windows 8.1没有125%缩放的概念;它使用100%/ 140%/ 180%. DisplayInformation.ResolutionScale的值为100.因此它实际缩放了80%(100/125).而44 * 0.8是~35.
注意:不支持以下内容,因为它依赖于Windows 8.1应用程序中的反射和使用Windows 10的功能.使用风险由您自己承担. 这是您尝试使用Windows 8.1应用程序为Windows 10提供更好体验的一种方法.我在Windows 10上对其进行了简要的测试,但您也希望在Windows 8.1上进行更全面的测试: private void FixUpScale() { // Need to add a using for System.Reflection; var displayInfo = DisplayInformation.GetForCurrentView(); var displayType = displayInfo.GetType(); var rawPixelsProperty = displayType.GetRuntimeProperty("RawPixelsPerViewPixel"); if (rawPixelsProperty != null) { var realScale = (double)rawPixelsProperty.GetValue(displayInfo); // To get to actual Windows 10 scale,we need to convert from // the de-scaled Win8.1 (100/125) back to 100,then up again to // the desired scale factor (125). So we get the ratio between the // Win8.1 pixels and real pixels,and then square it. var fixupFactor = Math.Pow((double)displayInfo.ResolutionScale / realScale / 100,2); Window.Current.Content.RenderTransform = new ScaleTransform { ScaleX = fixupFactor,ScaleY = fixupFactor }; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Powershell中远程启动进程,在Windows中获得%ERRORLEVEL%
- 在Windows 7中是否有任何用于监控java应用程序的工具?
- 如何在Windows 2008 Server上创建运行.bat文件的服务?
- windows – 如何使用简单的批处理文件解压缩和覆盖现有文件
- windows – 什么是流程句柄?
- windows-7 – 带有TPM的BitLocker但没有启动PIN关注我的用户
- windows-server-2008 – 所有PHP站点都停止在IIS7上工作,内
- windows驱动程序中的预处理含义
- windows-server-2003 – 在个人证书上禁用强私钥加密
- Win10系统安装UEFI+GPT配置
- Windows平台下面Oracle11.2.0.1 升级Oracle11.2.
- 如何创建正常的win32编辑控件?
- windows-phone-7 – 使用Windows Phone 7中的Web
- windows – 使用npm安装生成ENOENT错误
- WPF / XAML:如何调整没有边框的窗口大小?
- windows-server-2008 – 为什么Windows 2008在断
- 尝试使用批处理文件在Windows中编辑注册表
- windows-phone-7 – Windows Phone 7 – 两列列表
- windows-server-2008-r2 – 我需要打开哪些防火墙
- 从Windows应用商店应用中删除超链接下划线