7

Retinaディスプレイを搭載したMacのみに影響を与えるSwing画像レンダリングのバグを発見しました(TYPE_INT_ARGB_PRE BufferedImages描画に失敗します)。効果的な回避策があります(TYPE_INT_ARGB代わりに画像を使用します)が、それを適用するには、ホストマシンがRetinaディスプレイを搭載したMacであるかどうかを検出できる必要があります。マシンがMacであるかどうかを検出することは問題ありませんが、表示タイプを判別するにはどうすればよいですか?

4

2 に答える 2

15

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

上記の行は2.0、Retinaディスプレイに戻るはずです。最近の非網膜マックではそれが戻り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 に答える