谈到高分屏,虽说拥有更高的分辨率,娱乐方面可以体验更精细的视觉画面效果。但是对于开发者来说windows平台下,很多软件不支持DPI缩放,绝对是一个头疼的问题。
近期因为工作需要,在自己的surface pro3上安装了eclipse软件。虽然勉强完成了开发任务,但是那微小的文字和图标,着实蛋疼。本着一颗探索的心,决定要解决eclipse在高分屏上的UI缩放问题。
检索网络除了没用的信息以外,只有一种解决方案:配置eclipse,使其使用windows系统的DPI适配。这样往往界面会很模糊,看了十分不爽。具体的解决方案如下:
新建注册表
DWORD值,位于HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\下,名称为PreferExternalManifest,并设置为1。在eclipse的根目录下,新建文本文档,并修改文件名(包含扩展名)为
eclipse.exe.manifest。文件内容为
|
|
以上就完成了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下添加以下配置:
|
|
至此,终于比较完美的解决了eclipse的DPI缩放问题。
注:本文仅于windows系统下对eclipse进行测试,Linux或者Mac OS下未验证。