SWT(或 JFace)是否有一种公共(public)便利方法可以将传统单位转换为相应的缩放单位?我发现提到了 DPIUtil
类,但它是内部命名空间的一部分
如果没有便捷的方法可用,那么是否有可靠的方法来访问缩放级别?我看到有Device#getDeviceZoom()但这是 protected 。有Device#getDPI()这是公开的,因此可能有用。这是否考虑到了缩放,还是天真的,只是声明所有 DPI 都是 96?
我正在对某些面板应用默认大小调整提示,我希望它们考虑显示器缩放设置。例如,假设在常规显示器上我希望默认值为 300px,但在 150% 缩放时我希望将其计算为 450px。计算显然很简单,但我需要乘数。
注意:这与我之前的问题 How do you utilize SWT's Hi-DPI support for icons? 相关但不同。因为 SWT 提供了专门处理图像的类。
最佳答案
除了 DPIUtil 之外,我还没有找到任何其他东西来确定比例(缩放)因子。
但您通常不需要此信息。在 150 缩放设备上指定 300px 的大小将被 SWT 自动缩放为 450px(并且将使用您提供的任何 150 缩放图像)。我有一台带有两个屏幕的 iMac - 一个缩放为 200 的 5k 屏幕和一个未缩放的 2.5k 屏幕 - SWT 应用程序在两个屏幕上显示的大小相同。
缩放实际上是在操作系统中完成的,而不是 SWT(至少在 macOS 上是这样工作的)。操作系统会放大尺寸,以更高分辨率渲染字体,并使用高分辨率图像(如果可用)。因此程序除了提供高分辨率图像之外不需要做任何事情。
这样,即使是不知道缩放显示的旧程序仍然会以合理的尺寸显示。
关于java - 如何利用 SWT 的 Hi-DPI 支持来调整小部件大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47613325/