2017-12-02 143 views
0

SWT(或JFace)是否有一個公共便利的方法將常規單位轉換爲其縮放對象?我發現提到DPIUtil類,但這是內部命名空間的一部分您如何利用SWT的Hi-DPI支持小部件尺寸?

如果沒有可用的便利方法,那麼是否有可靠的方法來訪問縮放級別?我看到有Device#getDeviceZoom()但這是受保護的。有Device#getDPI()這是公開的,所以它可能是有用的。這是否需要考慮擴大規模,還是天真的,只是宣佈DPI爲96?

我將默認大小提示應用於某些面板,我希望他們考慮監視器縮放設置。例如,在常規顯示屏上說我想要默認爲300像素,但在150%縮放比例下,我想將其計算爲450像素。計算顯然很簡單,但我需要乘數。

注意:這與我之前的問題How do you utilize SWT's Hi-DPI support for icons?有關,但不同,因爲SWT提供了專門用於處理圖像的類。

+0

你通常不需要。指定300px的大小將被150縮放設備上的SWT自動縮放爲450px(並且將使用您提供的任何150縮放圖像)。我有一個iMac將兩個屏幕 - 一個5k屏幕縮放在200和一個2,5k屏幕不縮放 - SWT應用程序在兩個上顯示相同的大小。 –

+0

@ greg-449我沒有意識到它會自動轉換。 SWT文檔是否在某處存在,或者它是大多數實現遵守的那些未記錄的功能之一?我一直沒能找到有關使用SWT進行DPI縮放的全面信息。 – cpburnz

+0

它不是真的SWT,它是OS(至少它是如何在macOS上工作的)。操作系統放大尺寸,以更高的分辨率呈現字體,並使用高分辨率圖像(如果可用)。因此,除了提供高分辨率圖像之外,程序不需要做任何事情。 –

回答

1

我還沒有發現除DPIUtil以外的任何用於確定縮放比例的因素。

但您通常不需要此信息。指定300px的大小將被150縮放設備上的SWT自動縮放爲450px(並且將使用您提供的任何150縮放圖像)。我有一個帶有兩個屏幕的iMac - 一個5k屏幕縮放到200,一個2.5k屏幕縮放 - SWT應用在兩個屏幕上顯示的尺寸相同。

縮放實際上是在OS而不是SWT中完成的(至少它是如何在macOS上工作的)。操作系統放大尺寸,以更高的分辨率呈現字體,並使用高分辨率圖像(如果可用)。因此,除了提供高分辨率圖像之外,程序不需要做任何事情。

這種方式即使是舊的程序,不知道放大顯示仍然顯示在一個合理的大小。