我发现了一个Swing图像渲染错误,它只会影响带有Retina显示的Mac(TYPE_INT_ARGB_PRE
BufferedImages
无法绘制)。我有一个有效的解决方法(使用TYPE_INT_ARGB
图像),但为了应用它,我需要能够检测主机是否是具有Retina显示的Mac。检测机器是否为Mac是没有问题的,但如何确定显示类型?
答案 0 :(得分:15)
Toolkit.getDefaultToolkit().getDesktopProperty("apple.awt.contentScaleFactor")
以上行应在视网膜显示屏上返回2.0
。在最近的非视网膜Mac上,它会返回1.0
,而在所有其他平台上,您会返回null
。我找不到任何官方文档,但在尝试解决类似问题时遇到了in this mailing list post。
答案 1 :(得分:1)
我发现this解决方案使用:
Graphics2D g = (Graphics2D) this.getGraphics ();
boolean retinaTest = g.getFontRenderContext ().getTransform ()
.equals (AffineTransform.getScaleInstance (2.0, 2.0));