Ced*_*tin 6 java icons swing pixel retina-display
我有一个Java桌面应用程序,可以在OS X上运行.
现在新的MacBook Pro有一个视网膜显示器,我担心:它如何适用于Swing?
当Java应用程序同时使用Swing组件和一些位图图形(如自定义图标/ ImageIcon)时怎么样?
是否应自动调整所有桌面Java应用程序的大小(例如,将每个像素增加四倍)或者我需要创建两个版本的图标集(例如,一个具有24x24图标,另一个具有96x96图标)并以某种方式确定应用程序在视网膜显示器上运行?
在Apple的Java 6中,您可以提供同一图像的多个版本。根据屏幕(是否为视网膜),选择并绘制一个或另一个图像。
但是,这些图像必须以特殊方式加载:
Toolkit.getDefaultToolkit().getImage("NSImage://your_image_name_without_extension");
Run Code Online (Sandbox Code Playgroud)
例如,如果您的(常规分辨率)图像称为:“ scissor.png”,则必须创建高分辨率版本“ scissor@2x.png”(遵循Apple命名约定),并将这两个图像都放置在Resources您的目录中应用程序捆绑包(是的,您需要捆绑您的应用程序)。然后致电:
Image img = Toolkit.getDefaultToolkit().getImage("NSImage://scissor");
Run Code Online (Sandbox Code Playgroud)
您可以在按钮中使用生成的图像,然后以正确的分辨率神奇地绘制它。
您还可以使用另外两个“技巧”:
现在,第一个“技巧”(0.5缩放)也可以在Oracle的Java 7/8上使用。即,如果您直接以0.5比例绘制图像到组件的Graphics对象,它将在Retina显示器上以高分辨率呈现(并且原始大小的一半)。
我的 Retina MacBook '12 上的图标如下所示:

左侧是 IntelliJ IDEA 11(swing 应用程序)的图标,右侧是据称已视网膜化的 IDEA 12 。正如您所看到的,自动调整大小的图标(左侧)看起来非常难看。
据我所知,他们就像 Chrome 团队的人一样,通过提供双倍大小的图标来实现这一点。
| 归档时间: |
|
| 查看次数: |
3043 次 |
| 最近记录: |