uno-platform - Uno-platform:画布不是像素,而是按比例缩放
问题描述
Uno 说它是“无处不在的完美像素”。所以我创建了一个宽度为 320 和高度为 320 的画布,并在其中放置了一些按钮,每个边缘一个。
现在,当我在 Android 或 IOS 上启动应用程序时,画布比屏幕大,右侧的按钮根本不显示。
但是我的 iPhone8 和三星 S9 的屏幕分辨率远远大于 320 x 320。整个画布被某种东西缩放,甚至主窗口的窗口边界也远小于我的屏幕分辨率。
我的问题:
- 我可以关闭缩放并使用真实分辨率吗?
- 是否有一个属性可以让我获得缩放因子,这样我就可以调整画布的大小并将所有内容计算为缩放后的大小?
解决方案
Width
Uno/WinUI Xaml 中的和等布局值Height
在“逻辑像素”中定义,与“物理像素”不同。由于具有相似物理尺寸的设备可能具有截然不同的物理像素密度,因此在大多数情况下,逻辑像素是指定布局尺寸的更好方法。
确保您了解 Xaml 的布局系统- 当您将内容拉伸到屏幕宽度时,通常根本不应该对尺寸进行硬编码。例如:
<Grid HorizontalAlignment="Stretch"
Height="320">
<Button Content="Button1"
HorizontalAlignment="Left"
VerticalAlignment="Top" />
<Button Content="Button2"
HorizontalAlignment="Right"
VerticalAlignment="Top" />
...
</Grid>
综上所述,在极少数情况下您确实需要使用与设备相关的物理像素,您可以使用DisplayInformation
该类及其属性,例如:
var displayInformation = DisplayInformation.GetForCurrentView();
var scaleFactor = displayInformation.RawPixelsPerViewPixel;
...
推荐阅读
- assembly - 程序集是特定于 CPU、CPU 架构还是其他什么?
- python - Python Tkinter 文本插入方法
- c# - 在 Visual Studio 2017 上检查非托管 C++ 对象/变量
- python - 如何在 cog discordpy 中卸载命令?
- asp.net-core - XUnit ASP.Net Core WebAPI 测试中 EnsureSuccessStatusCode 和 Assert.Equal(HttpStatusCode.OK, response.StatusCode) 之间的区别
- python - 如何在两个脚本中以大写字母拆分字符串
- bash - 如果后台进程之一在 bash 中失败,如何使整个主进程失败?
- javascript - 在 JS 中无法使用键名访问 JSON 对象值
- angular - Angular:PrimeNG 组织结构图未正确呈现图表
- html - 如何在 react 中使用 css 拉伸我的背景?(处理溢出)