[英]Uno-platform: Canvas not in pixel but scaled by something
Uno 說它是“無處不在的完美像素”。 所以我創建了一個寬度為 320 和高度為 320 的 canvas 並在里面放置了一些按鈕,每個邊緣一個。
現在,當我啟動應用程序時,在 Android 或 IOS 上,canvas 比屏幕大,右側的按鈕根本不顯示。
但是我的 iPhone8 和我的三星 S9 的屏幕分辨率遠遠大於 320 x 320。整個 canvas 被某些東西縮放,甚至 window 的主屏幕分辨率也遠小於我的屏幕分辨率。
我的問題:
Uno/WinUI Xaml 中的Width
和Height
等布局值在'logical pixels'中定義,與 'physical pixel' 不同。 由於具有相似物理尺寸的設備可能具有截然不同的物理像素密度,因此在大多數情況下,邏輯像素是指定布局尺寸的更好方法。
確保您了解 Xaml 的布局系統- 當您將內容拉伸到屏幕寬度時,通常根本不應該對尺寸進行硬編碼。 例如:
<Grid HorizontalAlignment="Stretch"
Height="320">
<Button Content="Button1"
HorizontalAlignment="Left"
VerticalAlignment="Top" />
<Button Content="Button2"
HorizontalAlignment="Right"
VerticalAlignment="Top" />
...
</Grid>
綜上所述,在極少數情況下您確實需要使用與設備相關的物理像素,您可以使用DisplayInformation
class及其屬性,例如:
var displayInformation = DisplayInformation.GetForCurrentView();
var scaleFactor = displayInformation.RawPixelsPerViewPixel;
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.