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