7

我发现了一个 Swing 图像渲染错误,它只影响带有 Retina 显示器的 Mac(TYPE_INT_ARGB_PRE BufferedImages无法绘制)。我有一个有效的解决方法(改用TYPE_INT_ARGB图像),但为了应用它,我需要能够检测主机是否是带有 Retina 显示屏的 Mac。检测机器是不是Mac没问题,但是怎么判断显示器类型呢?

4

2 回答 2

15

Toolkit.getDefaultToolkit().getDesktopProperty("apple.awt.contentScaleFactor")

上面的行应该2.0在视网膜显示器上返回。在最近的非视网膜 Mac 上它会返回1.0,而在所有其他平台上你会返回null。我找不到任何官方文档,但在尝试解决类似问题时,我在这个邮件列表帖子中遇到了它。

于 2013-02-05T21:17:09.177 回答
1

我发现这个解决方案使用:

Graphics2D g = (Graphics2D) this.getGraphics ();
boolean retinaTest = g.getFontRenderContext ().getTransform ()
    .equals (AffineTransform.getScaleInstance (2.0, 2.0));
于 2016-07-30T03:12:56.333 回答