SWT(或JFace)是否具有将传统单位转换为按比例缩放的对应单位的公共便捷方法?我发现提到了DPIUtil类,但这是内部名称空间的一部分

如果没有可用的便捷方法,那么是否存在访问缩放级别的可靠方法?我看到有Device#getDeviceZoom(),但这是受保护的。有Device#getDPI()是公共的,因此可能很有用。是否考虑到缩放比例,还是天真地宣布DPI等于96?

我正在将默认大小调整提示应用于某些面板,我希望它们将监视器缩放比例设置考虑在内。例如,在常规显示器上说,我希望默认值是300px,但是在150%缩放比例下,我想将其计算为450px。计算显然很简单,但我需要乘数。

注意:这与我之前的问题How do you utilize SWT's Hi-DPI support for icons?有关,但有所不同,因为SWT提供了一些类来专门处理图像。

最佳答案

除了DPIUtil之外,我没有其他东西可以用来确定比例(缩放)因子。

但是您通常不需要此信息。指定的300px大小将由SWT在150缩放的设备上自动缩放为450px(并且将使用您提供的任何150缩放的图像)。我有一台iMac,它有两个屏幕-一个5k屏幕缩放为200,一个2.5k屏幕没有缩放-SWT应用在两个屏幕上都显示相同的大小。

扩展实际上是在操作系统而不是SWT中完成的(至少这是在macOS上的工作方式)。操作系统会按比例放大尺寸,以更高的分辨率渲染字体,并使用高分辨率的图像(如果有)。因此,程序除了提供高分辨率图像外无需执行其他任何操作。

这样,即使是不知道缩放显示的旧程序,仍然可以以合理的大小显示。

关于java - 您如何利用SWT的Hi-DPI支持调整窗口小部件大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47613325/

10-12 06:26