【发布时间】:2021-01-07 16:31:22
【问题描述】:
我正在制作一个展示不同版本的选举团的程序。每个状态都有一种独特的颜色,这样我就可以将它们分开并用它们制作一个新的 BufferedImage。我需要 BufferedImage 是透明的,这样我就可以在不与各州重叠黑色矩形的情况下重建美国。我尝试让每个像素透明,但它仍然显示为黑色。
这只是使黑色像素透明的部分。 (dr 是 Graphics2D,state 是 BufferedImage)
for (int u = 0; u < state.getHeight(); u++) {
for (int o = 0; o < state.getWidth(); o++) {
Color rgbValue = new Color(state.getRGB(o, u));
int red = rgbValue.getRed();
int green = rgbValue.getGreen();
int blue = rgbValue.getBlue();
if (red == 0 && green == 0 && blue == 0) {
dr.setColor(new Color(0, 0, 0, 0));
dr.fillRect(o, u, 1, 1);
}
}
}
【问题讨论】:
-
发布您的minimal reproducible example 以证明问题。创建 BufferedImage 的代码在哪里?你用透明度创建它吗?
-
@camickr BufferedImage 已经创建,这只是去除黑色像素的部分
-
那是我的问题。您是否正确创建了 BufferedImage?并非所有缓冲图像都支持透明度。
-
@camickr 我这样声明了我的 BufferedImage: BufferedImage state = new BufferedImage(topRight - topLeft, getTop(-2)[0], BufferedImage.TYPE_INT_ARGB);
-
仍然没有看到 MRE,所以我帮不上忙。