gpt4 book ai didi

java - 在 Java 中的 bufferedImage 上画一个圆圈

转载 作者:行者123 更新时间:2023-11-30 02:18:50 25 4
gpt4 key购买 nike

我想在缓冲图像上画一个像 png 一样的圆圈

我想使用这个圆圈来替换我正在开发的绘画应用程序的鼠标光标。

我无法从谷歌下载圆形png,因为我需要根据我所使用的工具的宽度不断更改该圆形的大小。

这是我迄今为止的尝试

  public static BufferedImage getCircle() {

BufferedImage bufferedImage = new BufferedImage(30, 30, BufferedImage.TYPE_INT_RGB);
Color transparent = new Color(0x00FFFFFF, true);

Graphics2D g = (Graphics2D) bufferedImage.getGraphics();
//trying to make the bufferedImage transparent
g.setComposite(AlphaComposite.Src);
g.setColor(transparent);
g.setBackground(transparent);
g.fillRect(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight());
//drawing the circle
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.black);
g.drawOval(0, 0, 200, 200);
return bufferedImage;
}

它应该看起来像:

enter image description here

但是我的代码目前仅创建一个白色方 block

最佳答案

您的代码有两个问题(如注释中所示)。第一个方法是在尺寸30px的图像中绘制一个半径200px的圆。如果仔细观察,你几乎看不到右下角有一个黑色像素。

通过调整尺寸使其适合内部来修复它,例如:

BufferedImage bufferedImage = new BufferedImage(60, 60, BufferedImage.TYPE_INT_RGB);
...
g.drawOval(5, 5, 50, 50);

接下来就是要实现透明背景。为此,您需要将图像的类型设置为支持透明度的颜色模型,例如ARGB(A = Alpha =透明度)而不是 RGB:

BufferedImage bufferedImage = new BufferedImage(60, 60, BufferedImage.TYPE_INT_ARGB);

最后,您可能想要增加边框的厚度以获得您显示的图像。您可以使用g.setStroke(...)来实现:

g.setColor(Color.BLACK);
g.setStroke(new BasicStroke(5));
g.drawOval(5, 5, 50, 50);

通过此设置,您可以获得以下结果(具有透明度):

resulting circle

根据您的具体需要调整这些值。

关于java - 在 Java 中的 bufferedImage 上画一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47462213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com