2011-01-31 5 views
3

私は、BufferedImageに丸みのある四角形を描き、画像をファイルに保存する非常に単純な画像生成プログラムを持っています。fillRoundRectが正常にレンダリングされないとの問題

try 
{ 
    BufferedImage image = new BufferedImage(40, 40, BufferedImage.TYPE_INT_ARGB); 

    Graphics2D g2 = image.createGraphics(); 
    g2.setPaint(Color.blue); 

    g2.fillRoundRect(0, 0, 39, 39, 6, 6); 

    File file = new File("C:\\test.png"); 

    ImageIO.write(image, "png", file); 
} 
catch(IOException e) 
{ 
    e.printStackTrace(); 
} 

予想通り、私はのdrawRoundRectを使用して四角形を描画するたびにすべての作品:

enter image description here

私はfillRoundRectを使用する場合ただし、長方形が右と下側にトリミングすることが表示されます。

enter image description here

私は、BufferedImage自体を大きくして、rec同じ大きさのものが混ざっていますが、問題はまだあります。また、どんな矩形の幅と高さ、円弧の幅と高さを選んでも、4つのコーナーは決して同じではありません(大きければ大きいほど、それほど顕著ではありません)。

これは一般的な問題ですか、多分丸みのある四角形を誤解していますか?

ご迷惑をおかけして申し訳ございません。

おかげで、

B.J.

答えて

7

はあなたがアンチエイリアシングを有効にしようとしたことがありますか?

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
+0

はい、うまくいきました。私はそれが簡単な解決策であることを望んでいました。助けてくれてありがとう。 – Benny

関連する問題