我们的基于SWT的Java应用程序自动使用操作系统的默认字体大小,以及派生其他字体。因此,GUI的文本在高分辨率屏幕上看起来很好(例如2880 x 1620,其中Windows 8被配置为"较大"在控制面板中>外观和个性化>显示)。不幸的是,图像没有缩放,因此,例如,工具栏按钮显得太小。
在OS X上,高分辨率屏幕处理看起来很简单:虚拟分辨率只是大小的一半,但如何在Windows上进行缩放似乎允许非整数缩放因子?如何检测何时缩放以及何时不缩放?
更新 看起来this SWT issue涵盖了类似的问题。
答案 0 :(得分:1)
SWT提供基于分辨率的自动缩放
SWT现在可以自动在Windows上的高DPI显示器上缩放图像 和Linux一样,类似Mac OS上对OS X的支持。在没有的情况下 对于高分辨率图像,SWT会自动缩放可用图像 确保缩放基于SWT的Eclipse应用程序 与监视器的分辨率成比例。
Neon (4.6) M6 - New and Noteworthy
通过设置此VM,可以在Windows和GTK上禁用此功能 eclipse.ini中的参数为false或-vmargs之后的命令行:
-Dswt.enable.autoScale =假
无法在Mac上禁用自动缩放,因为它是由。提供的 OS。
警告:我们知道一些缩放图像在比例因子上看起来很糟糕 不到200%。这将在M7中得到改进。而且,我们是 致力于在Platform UI中支持高DPI图像,以便插件 提供商可以添加高DPI图标而无需进行任何代码更改。
或者这有助于在Eclipse Mars API中添加高分辨率
添加了新的API以支持渲染 高DPI监视器上的高分辨率图像。两个建设者有 已添加到Image类。他们接受图像提供者回调 允许客户提供与分辨率相关的图像版本:
public interface ImageDataProvider { public ImageData getImageData (int zoom); } public interface ImageFileNameProvider { public String getImagePath (int zoom); }
根据用户的显示器配置,SWT将请求图像 具有相应的缩放级别。这是一个显示3的示例 原始图像,然后是分辨率变化的变体 取决于您的显示器的分辨率:。
请注意,这只是支持高分辨率的第一步 SWT和基于Eclipse的应用程序中的图像。工作正在进行中 在平台中采用新的API。此外,SWT的更多工作是 需要通过正确支持绘制成高分辨率图像 GC
支持高DPI监控的API
Snippet367.java