簡體   English   中英

Uno 平台:Canvas 不是像素,而是按比例縮放

[英]Uno-platform: Canvas not in pixel but scaled by something

Uno 說它是“無處不在的完美像素”。 所以我創建了一個寬度為 320 和高度為 320 的 canvas 並在里面放置了一些按鈕,每個邊緣一個。

現在,當我啟動應用程序時,在 Android 或 IOS 上,canvas 比屏幕大,右側的按鈕根本不顯示。

但是我的 iPhone8 和我的三星 S9 的屏幕分辨率遠遠大於 320 x 320。整個 canvas 被某些東西縮放,甚至 window 的主屏幕分辨率也遠小於我的屏幕分辨率。

我的問題:

  1. 我可以關閉縮放並使用真實分辨率嗎?
  2. 是否有一個屬性可以讓我獲得縮放因子,所以我可以調整 canvas 的大小,然后將所有內容計算為縮放后的大小?

Uno/WinUI Xaml 中的WidthHeight等布局值在'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM