在Windows 8.1的高分辨率屏幕上,Eclipse界面图标非常小

Eclipse(Kepler)界面中的各种图标和button在3200x1800px屏幕的笔记本电脑上非常非常小。 除非我的鼻子距离屏幕几厘米,否则看起来指示文件上的错误的红色错误修饰是难以看见的。

我已经在操作系统(Windows 8.1)中调整屏幕分辨率和其他设置,这有助于调整屏幕分辨率和其他设置,但会导致其他应用程序显示过大,即使这样,Eclipse图标也不会太小。 在Eclipse首选项(窗口>首选项>对话框字体)中放大字体不会影响图标大小。

有没有简单的方法来强制更大的图标? 任何工作(我使用的放大镜,但这是一个相当笨重的解决scheme)? 我应该只是买一个放大镜,并把它放在我的鼠标旁边? 也许有人应该用放大镜embedded鼠标? 🙂

谢谢。

我已经在上个月查找了这个问题的解决scheme,但我还没有find理想的解决scheme。 似乎应该有一个方法,但我无法find它。

我在Windows 8.1中使用具有2560×1600屏幕和200%放大率的笔记本电脑(使其看起来像1280×800屏幕,但更清晰)。

支持这种“HiDPI”模式的应用程序看起来非常漂亮,但不支持的应用程序(例如Eclipse)显示几乎不可读的小图标。

我也使用过时的Visual Studio版本。 对于HiDPI来说还没有更新(显然MS希望我使用VS的更新版本),但是它仍然适用于HiDPI屏幕,因为它只是扩展了两倍 – 图标和字母的大小是正常的,但是它们看起来分辨率较低。

在我看到VS如何工作之后,我开始寻找一种以同样的模式启动Eclipse的方式,因为从技术angular度来说,像VS这样的扩展在技术上不是很难。 我认为会有一个select,我可以设置在该模式下启动Eclipse。 我找不到它。

毕竟,我最终将屏幕分辨率降低到1/4(从2560×1600到1280×800),没有放大率(从200%到100%),没有利用高分辨率屏幕,直到Eclipse得到更新以支持它,因为我不得不做一些工作,但我正在等待这个问题的答案。

我想到一个解决scheme是在包含图标的Eclipse JAR上运行批处理操作,并将其大小加倍。 经过一些修补,它的工作。 结果是相当不错的 – 仍然有一些“固执”的图标是微小的,但大多数看起来不错。

在QHD上处理后的Eclipse

我把代码放到一个小的项目中: https : //github.com/davidglevy/eclipse-icon-enlarger

该项目的工作原理是:

  1. 遍历eclipse基目录中的每个文件(在参数行中指定)
  2. 如果文件是目录,则在输出文件夹中的当前目录下创build一个新目录(在参数行中指定)
  3. 如果文件是PNG或GIF,请加倍
  4. 如果一个文件是另一种types的副本
  5. 如果文件是JAR或ZIP,则创build一个目标文件并使用类似的过程处理这些内容:a。 图像翻倍b。 其他文件按原样复制到ZipOutputStream中。

我用这个解决scheme发现的唯一问题是,它真的只能工作一次 – 如果你需要下载插件,那么在原来的位置,并重新应用图标增加批处理过程。

在戴尔XPS上,大约需要5分钟的时间。

乐于提出build议/改进,但这实际上只是一个临时解决scheme,而我们正在等待Eclipse团队修复。

为了完成,我想补充说,这个问题已经在Eclipse 4.6 Neon https://www.eclipse.org/downloads/index-developer.php (当前的开发者版本)中解决了。 图标看起来有点伤心(低分辨率),但至less他们在我的4k屏幕上正确缩放。

我使用的是戴尔XPS 15,而不是用分辨率和放大倍数等等,我只是做了以下工作:

  • 右键单击启动器图标
  • 点击“属性”
  • select“兼容性”选项卡
  • select“Windows XP(Service Pack 3)”作为“在兼容模式下运行此程序:”。

一切似乎工作正常,显示看起来不错(如果有点模糊/像素)。 唯一的区别是我可以看到的标题栏是在Windows XP风格(哦不!!!)。

我很想知道这是否适用于其他人,如果有人遇到任何问题。

我发现最简单的方法是创build一个强制Windows扩展应用程序的清单文件。 这是模糊和不理想,但比几乎看不见的用户界面好! 看来这种技术也适用于任何应用程序。

在与eclipse.exe相同的文件夹中创build一个eclipse.exe.manifest文件,并在其中放置以下XML:

 <?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"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"> </assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"> </assemblyIdentity> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </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> 

最好的方法是编辑exe资源清单,如资源调谐器和添加

  <application xmlns="urn:schemas-microsoft-com:asm.v3"><windowsSettings><ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings" xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware></windowsSettings></application> 

依赖后设置的exe作为dpi不知道。 这样程序将会有一点点像素化,但是会有一个舒适的大小。

-SurfacePro3-

  • 下载并解压日食“32位版本”。
  • 在“Windows XP模式”下运行。

Windows Xp的兼容模式仅适用于Eclipse 32位版本,在兼容模式下运行后,图标和文本的大小将会是正确的,但由于它们从原始分辨率缩放到屏幕分辨率而变得模糊,质量是失去的。

最好的毫不费力的解决scheme是去Eclipse霓虹灯。 所有错误都作为此版本的一部分进行修复。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=421383

我通过创build一个(Linux)shell脚本( .sh )来解决@Sigh的解决scheme来做类似的事情。 这是非常原始的,残酷的,需要通过你的具体系统。 使用风险自负。 它可能会破坏你的整个安装。 在运行此脚本之前备份文件夹。 脚本可以改进。

 #!/bin/bash for J in *.jar do echo "Copying $J..." mkdir -p "/tmp/$J" cp "$J" "/tmp/$J/" cd "/tmp/$J" echo "Extracting $J..." jar xf "$J" rm "$J" echo "Processing images..." find . -name "*.gif" -exec convert {} -resize 200% {} \; echo "Compressing $J..." if [ `ls .[^.]* 2>/dev/null | wc -l` = 0 ] then jar cf "$J" * else jar cf "$J" * .[!.]* fi cd - mv $J{,-bak} mv "/tmp/$J/$J" . rm -rf "/tmp/$J" echo "Done." echo "" done 

/opt/eclipse/plugins~/.eclipse/org.eclipse.platform_4.xx/plugins (或者你的安装path)中运行。 与@Sigh的解决scheme相同的问题:这是一个残酷的“修复”,并在每次更新或新安装后中断。

脚本可以完善:

  • 忽略不包含/图标/文件夹的.jar文件
  • 只调整16×16的图像,以便在每次更新/安装后再次运行

需要imagemagick


注意事项

  • 它不适用于所有图标。
    • 有谁知道其他资产在哪里?为什么他们没有resize? 也许他们不是.gif
  • 项目资源pipe理器图标搞砸了。

修复是受欢迎的!

以下解决scheme为我工作

首先你需要添加这个registry项

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\PreferExternalManifest (DWORD) to 1 

接下来,与可执行文件同名的清单文件必须与可执行文件存在于相同的文件夹中。 该文件名为eclipse.exe.manifest,由以下内容组成:

 <?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> 

你可以在这里find更多的细节

看看霓虹灯(4.6)M6 – 新的值得注意的是 ,里程碑版本包含一些自动缩放图像(例如工具栏)。

SWT提供基于分辨率的自动缩放

SWT现在可以在Windows和Linux上的DPI高分辨率显示器上自动缩放图像,这与Mac OS上的Retina支持类似。在没有高分辨率图像的情况下,SWT将自动缩放可用图像,以确保基于SWT的应用程序Eclipse与显示器的分辨率成比例地缩放。

在这里输入图像说明

通过在eclipse.ini中或在命令行中将此VM参数设置为false,可以在Windows和GTK上禁用此function:-vmargs:

-Dswt.enable.autoScale = FALSE

自动缩放无法在Mac上禁用,因为它是由操作系统提供的。

注意事项:我们知道一些缩放的图像在小于200%的缩放因子方面看起来不好。 这将在M7中得到改善。 此外,我们正在平台UI中支持高DPI图像,以便插件提供商可以添加高DPI图标,而无需更改任何代码。

或者,也许这有助于在Eclipse Mars API中添加高分辨率

已经添加了新的API以支持在高DPI监视器上呈现高分辨率图像。 Image类中已经添加了两个构造函数。 他们接受图像提供者callback,允许客户提供分辨率依赖版本的图像:

 public interface ImageDataProvider { public ImageData getImageData (int zoom); } public interface ImageFileNameProvider { public String getImagePath (int zoom); } 

根据用户的显示器configuration,SWT将请求具有相应缩放级别的图像。 下面是一个显示3个原始图像的例子,其次是分辨率根据显示器的分辨率而变化的变体: Snippet367.j​​ava 。

请注意,这只是在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

谢谢David Levy的感叹。 我不能在Eclipse上进行开发。 我必须添加一个coupla catch(例外)到你的代码才能使其工作:

  while (srcEntries.hasMoreElements()) { ZipEntry entry = (ZipEntry) srcEntries.nextElement(); logger.info("Processing zip entry ["+ entry.getName() + "]"); ZipEntry newEntry = new ZipEntry(entry.getName()); try { outStream.putNextEntry(newEntry); } ***catch (Exception e) { logger.error("error: ", e); outStream.closeEntry(); continue;* }** 

JaxEnter中有一篇关于HiDPI for Eclipse的文章

最后,我的工作是将清单文件添加到javaw.exe ,就像Heikki Juntunen在https://bugs.eclipse.org/bugs/show_bug.cgi?id=421383#c66

有关如何编辑registry和创build清单文件的说明,由Matthew Cochrane在https://bugs.eclipse.org/bugs/show_bug.cgi?id=421383#c60和@KItis编写的说明;

我把这个post的副本放在这里:


首先你需要添加这个registry项

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\PreferExternalManifest (DWORD) to 1 

接下来,与可执行文件同名的清单文件必须与可执行文件存在于相同的文件夹中。 该文件名为eclipse.exe.manifest,由以下内容组成:

 <?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> 

这是我的解决scheme灵感来自于@ Sigh的解决scheme(这个不使用maven):

https://github.com/gitAmrit/EclipseIconEnlarger/tree/master#eclipseiconenlarger

这可以通过search小于或等于16x16px的所有图像并按照用户想要的任何因素进行扩展。

运行实用程序:java images.EclipseIconEnlarger eclipseBasePath magnificaitonfactor

例如:java images.EclipseIconEnlarger C:\ Users \ Amrit \ Codes \ eclipse 2

eclipseBasePath = eclipse.exe所在的path,例如C:\ Users \ Amrit \ Codes \ eclipse magnificationfactor =图像放大的因子,例如2 = double

这是另一个命令行解决scheme,但是这适用于Windows。

它需要安装winrar(编辑设置winrar行指向winrar安装)。

它还需要安装imagemagick,并将其path添加到命令行中。

最后一点意见是我build议在第一次打开Eclipse之前运行它(即全新安装)。 有些图标会自动从jar中解压缩并保存在eclipse / configuration / org.eclips.osgi / …(可能位于其他文件夹中),并且编辑.jar文件可以防止图标被resize。 您可能可以删除此文件夹,并可能会再次自动提取,但无法确认。

要运行,只需在eclipse / plugins目录中创build一个doubler.bat文件,并将任何小于32×32的图标重新调整为该比例大小。

代码如下:

 @echo off set winrar="C:\Program Files\WinRAR\winrar.exe" set startpath=%~dp0 ::All *.jar in this folder FOR %%G in (*.jar) do (call :EachJar "%%G") GOTO :eof :EachJar ::echo %1 set nameWOQuotes=%~1 mkdir "tmp\%nameWOQuotes%" ::copy "%nameWOQuotes%" "tmp\%nameWOQuotes%.bak" >NUL %winrar% x -inul "%nameWOQuotes%" *.jpg *.gif *.png *.tif *.tiff "tmp\%nameWOQuotes%\" ::pause cd "tmp\%nameWOQuotes%" FOR /R .\ %%H in (*.jpg *.gif *.png *.tif *.tiff) do ( ::echo %nameWOQuotes%-%%~nxH >> "%startpath%\output.txt" identify "%%H" >> "%startpath%\output.txt" convert "%%H" -resize 32x32^< "%%H" ) %winrar% a -r -u "%startpath%\%nameWOQuotes%" "*" cd "%startpath%" rmdir /s /q "tmp\%nameWOQuotes%" Goto :eof 

它会创build一个文件output.txt,并在转换之前插入所有原始图像元数据,无论它是否更改大小。

如果你不想安装更新版本的eclipse

正如在这里提到的,在eclipse.init文件中添加-Dswt.autoScale=exact后面-vmargs和你很好去。

这里exact将图标缩放到原始缩放。 但是,你将不得不调整与模糊和锯齿形的图标。

Jae的上面的解决scheme为我工作。 清单解决scheme并不适用于我。 谢谢Jae。

安装程序:在我的Windows 8.1 64位非平板电脑笔记本电脑我下载64位JDK的Eclipse 64位。

  1. 在桌面上单击鼠标右键可以访问屏幕分辨率,并将屏幕分辨率显示从3000级降低到2048 x 1152。
  2. 点击使文本和其他项目更大或更小的链接,并将其改为大150%,而不是额外的超大 – 250%。
  3. 退出并重新login。
  4. 重新启动Eclipse,图标现在可见,即使它稍小,但现在更清晰。