Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 您如何利用SWT的Hi DPI支持来调整小部件大小?_Java_Swt_Jface - Fatal编程技术网

Java 您如何利用SWT的Hi DPI支持来调整小部件大小?

Java 您如何利用SWT的Hi DPI支持来调整小部件大小?,java,swt,jface,Java,Swt,Jface,SWT或JFace是否有一种公共便利的方法将传统单位转换为其比例对应单位?我发现有人提到DPIUtil类,但这是内部名称空间的一部分 如果没有方便的方法,那么是否有可靠的方法访问缩放级别?我明白了,但那是受保护的。有一些是公开的,所以它可能是有用的。这是考虑到了扩展性,还是太天真了,只是宣布DPI是96代表一切 我正在对一些面板应用默认大小提示,我希望它们考虑监视器缩放设置。例如,在常规显示器上,我希望默认值为300px,但在150%缩放时,我希望计算为450px。计算显然很简单,但我需要乘数

SWT或JFace是否有一种公共便利的方法将传统单位转换为其比例对应单位?我发现有人提到DPIUtil类,但这是内部名称空间的一部分

如果没有方便的方法,那么是否有可靠的方法访问缩放级别?我明白了,但那是受保护的。有一些是公开的,所以它可能是有用的。这是考虑到了扩展性,还是太天真了,只是宣布DPI是96代表一切

我正在对一些面板应用默认大小提示,我希望它们考虑监视器缩放设置。例如,在常规显示器上,我希望默认值为300px,但在150%缩放时,我希望计算为450px。计算显然很简单,但我需要乘数


注意:这与我之前的问题相关,但不同,因为SWT提供了专门处理图像的类。

除了DPIUtil之外,我还没有找到其他用于确定缩放因子的方法

但是你通常不需要这些信息。指定300px的大小将由SWT在150缩放设备上自动缩放为450px,并且将使用您提供的任何150缩放图像。我有一个iMac,有两个屏幕——一个5公里的屏幕缩放到200,另一个2.5公里的屏幕没有缩放——SWT应用程序在两个屏幕上显示的大小相同

扩展实际上是在操作系统而不是SWT中完成的,至少在macOS上是这样。操作系统会放大大小,以更高的分辨率渲染字体,并使用高分辨率图像(如果可用)。因此,除了提供高分辨率图像,程序不需要做任何事情


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

您通常不需要这样做。指定300px的大小将由SWT在150缩放设备上自动缩放为450px,并且将使用您提供的任何150缩放图像。我有一个iMac将有两个屏幕-一个5公里的屏幕缩放为200,一个2,5公里的屏幕未缩放-SWT应用程序在两个屏幕上显示相同的大小。@greg-449我没有意识到它是自动转换的。SWT是否在某个地方记录了它,或者它是大多数实现所遵循的未记录的特性之一?我还没有找到关于使用SWT扩展DPI的全面信息。这不是真正的SWT,至少是操作系统,这是它在macOS上的工作方式。操作系统会放大大小,以更高的分辨率渲染字体,并使用高分辨率图像(如果可用)。所以程序只需要提供高分辨率图像就可以了。@greg-449好的,我明白了。谢谢你的帮助。如果你把它作为一个答案,我会把它标记为接受。