Eclipse高分屏适配设置

2016-09-06

谈到高分屏,虽说拥有更高的分辨率,娱乐方面可以体验更精细的视觉画面效果。但是对于开发者来说windows平台下,很多软件不支持DPI缩放,绝对是一个头疼的问题。

近期因为工作需要,在自己的surface pro3上安装了eclipse软件。虽然勉强完成了开发任务,但是那微小的文字和图标,着实蛋疼。本着一颗探索的心,决定要解决eclipse在高分屏上的UI缩放问题。

检索网络除了没用的信息以外,只有一种解决方案:配置eclipse,使其使用windows系统的DPI适配。这样往往界面会很模糊,看了十分不爽。具体的解决方案如下:

  1. 新建注册表DWORD值,位于HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\下,名称为PreferExternalManifest,并设置为1

  2. 在eclipse的根目录下,新建文本文档,并修改文件名(包含扩展名)为eclipse.exe.manifest。文件内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<description>eclipse</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3" level="asInvoker" ms_asmv3:uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

以上就完成了eclipse的DPI缩放。但是这不符合我的美学。于是便又开始了探索之旅。

最后发现eclipse官方从neon版(可能是从mars开始)开始就已经原生支持DPI缩放了,详见Eclipse Project Neon - New and Noteworthy。其添加了SWT provides resolution-based auto-scaling的功能。具体解释为eclipse采用基于SWT开发的UI,可以自动适配HiDPI。但是为什么在我的surface上却没有办法进行自动适配呢?看到Tweaking SWT's auto-scaling这一段时,终于理解。

其默认的使用的是100%的整数倍缩放调整,并且采用的向下取值的原则,如150%会适配为100%,如果很靠近下一个整数倍时则向上取值,如175%会适配200%。看到这里,我终于明白为什么eclipse支持HiDPI适配,却没有调整界面缩放——系统的DPI为150%,此时会适配100%,因此界面DPI 100%不变。

若要修改以上的默认设置也是可以的。eclipse官方给出的设置方式是修改eclipse启动变量,位于根目录下的eclipse.ini文件。于-vmargs下添加以下配置:

1
-Dswt.autoScale=150

至此,终于比较完美的解决了eclipse的DPI缩放问题。

注:本文仅于windows系统下对eclipse进行测试,Linux或者Mac OS下未验证。