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

Ben*_*nny 3 java graphics image

我有一个非常简单的图像生成器程序,它只是在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();
}
Run Code Online (Sandbox Code Playgroud)

每当我使用drawRoundRect绘制矩形时,一切都按预期工作:

在此输入图像描述

但是,当我使用fillRoundRect时,矩形似乎在右侧和底侧被裁剪:

在此输入图像描述

我已经尝试使BufferedImage本身更大并​​保持矩形大小相同,但问题仍然存在.此外,无论我选择什么样的矩形宽度和高度或弧宽和高度,4个角都看起来不一样(虽然它越大,它看起来就越不明显).

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

任何帮助或建议将不胜感激.

谢谢,

BJ

Rac*_*ion 7

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

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Run Code Online (Sandbox Code Playgroud)