fillRoundRect的问题似乎无法正确呈现

时间:2011-01-31 20:40:57

标签: java image graphics

我有一个非常简单的图像生成器程序,它只是在BufferedImage上绘制一个圆角矩形,然后将图像保存到文件中。

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本身更大并​​保持矩形大小相同,但问题仍然存在。此外,无论我选择什么样的矩形宽度和高度或弧宽和高度,4个角看起来都不一样(虽然它越大,看起来就越不明显)。

这是一个常见的问题,还是我可能误解圆角矩形?

非常感谢任何帮助或建议。

谢谢,

B.J。

1 个答案:

答案 0 :(得分:7)

您是否尝试过启用抗锯齿功能?

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