我们基于 SWT 的 Java 应用程序自动使用操作系统的默认字体大小并派生其他字体。因此,GUI 的文本在高分辨率屏幕上看起来很好(例如 2880 x 1620,Windows 8 在控制面板 > 外观和个性化 > 显示中配置为“较大”)。不幸的是,图像没有缩放,因此,例如,工具栏按钮显得太小。
在 OS X 上,高分辨率屏幕处理似乎很容易:虚拟分辨率只是尺寸的一半,但如何在似乎允许非整数缩放因子的 Windows 上进行缩放?如何检测何时扩展、何时不扩展?
更新 看起来这个 SWT 问题涵盖了类似的问题。
看一下Neon (4.6) M6 - 新的和值得注意的,里程碑版本包含一些图像的自动缩放(例如工具栏)。
SWT 提供基于分辨率的自动缩放
SWT 现在可以在 Windows 和 Linux 上的高 DPI 显示器上自动缩放图像,类似于 OS X 上的 Mac Retina 支持。在没有高分辨率图像的情况下,SWT 将自动缩放可用图像,以确保基于 SWT 的应用程序(例如Eclipse 根据显示器的分辨率按比例缩放。
在 Windows 和 GTK 上,可以通过在 eclipse.ini 中或在命令行中 -vmargs 之后将此 VM 参数设置为 false 来禁用此功能:
-Dswt.enable.autoScale=false
在 Mac 上无法禁用自动缩放,因为它是由操作系统提供的。
注意事项:我们知道某些缩放图像在比例因子小于 200% 时看起来很糟糕。这一点在M7中将会得到改善。此外,我们正在努力在 Platform UI 中支持高 DPI 图像,以便插件提供商可以添加高 DPI 图标,而无需进行任何代码更改。
或者这可能有帮助,在 Eclipse Mars API 中添加了高分辨率
添加了新的 API,以支持在高 DPI 显示器上渲染高分辨率图像。Image 类中添加了两个构造函数。它们接受图像提供者回调,允许客户端提供依赖于分辨率的图像版本:
Run Code Online (Sandbox Code Playgroud)public interface ImageDataProvider { public ImageData getImageData (int zoom); } public interface ImageFileNameProvider { public String getImagePath (int zoom); }根据用户的显示器配置,SWT 将请求具有相应缩放级别的图像。下面的示例显示 3 个原始图像,后跟其分辨率根据显示器分辨率而变化的变体:Snippet367.java。
请注意,这只是在 SWT 和基于 Eclipse 的应用程序中支持高分辨率图像的第一步。在平台中采用新 API 的工作正在进行中。此外,需要在 SWT 中进行更多工作才能正确支持通过 GC 绘制高分辨率图像。
高 DPI 监视器支持的 API
http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2FwhatsNew%2Fplatform_isv_whatsnew.html
| 归档时间: |
|
| 查看次数: |
2797 次 |
| 最近记录: |