Java 绘制圆角矩形

Java 绘制圆角矩形,java,graphics2d,Java,Graphics2d,我想在一个使用圆形矩形而不是普通矩形的图中转换下面的示例,我知道剪切帧有可能。 但我真的不知道它们将如何应用于我目前的情况,因为我目前没有使用g2d.fillXXX()函数 图像: 守则: private void createImage() { bufferedImage = new BufferedImage(dimension.width, dimension.height, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = (

我想在一个使用圆形矩形而不是普通矩形的图中转换下面的示例,我知道剪切帧有可能。 但我真的不知道它们将如何应用于我目前的情况,因为我目前没有使用g2d.fillXXX()函数

图像:

守则:

private void createImage() {
    bufferedImage = new BufferedImage(dimension.width, dimension.height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = (Graphics2D)bufferedImage.createGraphics();

    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2d.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);

    int colorRed = 128;
    int colorGreen = 0;
    int colorBlue = 128;

    for (int x = 0; x < dimension.width; x++) {
        for (int y = 0; y < dimension.height; y++) {
            int dx = Math.min(x, dimension.width - x);
            int dy = Math.min(y, dimension.height - y);
            if (dx < 10 || dy < 10) {
                g2d.setColor(new Color(colorRed, colorGreen, colorBlue, 255 - Math.min(dx, dy)));
                g2d.drawLine(x, y, x, y);
            }
            else {
                g2d.setColor(new Color(colorRed, colorGreen, colorBlue, 192 - Math.min(dx, dy)));
                g2d.drawLine(x, y, x, y);
            }
        }
    }
}
private void createImage(){
BuffereImage=新的BuffereImage(dimension.width、dimension.height、BuffereImage.TYPE_INT_ARGB);
Graphics2D g2d=(Graphics2D)BuffereImage.createGraphics();
g2d.setRenderingHint(renderingHits.KEY\u抗锯齿,renderingHits.VALUE\u抗锯齿\u开启);
g2d.setRenderingHint(RenderingHits.KEY\u ALPHA\u插值,RenderingHits.VALUE\u ALPHA\u插值\u质量);
g2d.setRenderingHint(RenderingHints.KEY\u COLOR\u RENDERING,RenderingHints.VALUE\u COLOR\u RENDER\u QUALITY);
g2d.setRenderingHint(renderingHits.KEY_RENDERING,renderingHits.VALUE_RENDER_QUALITY);
int colorRed=128;
int colorGreen=0;
int colorBlue=128;
对于(int x=0;x
所以基本上我希望图像的外边缘和内边缘都有一个圆角矩形,同时避免颜色的变化

有什么线索可以帮助你做到这一点吗

问候。

您可以使用a和4(旋转) 将所有形状投射到,然后使用

area.exclusiveOr(ohterArea)
方法得到4个独立的(不同的梯度)部分。 然后使用类1乘1绘制这些部分,以绘制(填充)所有这4个部分到所需的渐变

作为最后一步,将绘制设置回静态颜色,然后绘制旧的RoundedRectangle(因此获得边缘)