在我的应用程序中,我有一张图像(世界地图)作为背景图片。在此背景图片上,有一个带有颜色渐变和透明填充效果的多边形。
您可以在此处找到叠加层的代码段:
public void paint(Graphics g) {
//draw a polygon with a gradient filling effect
Graphics2D g2 = (Graphics2D)g;
GradientPaint gp = new GradientPaint(x1, y1, color1, x2, y2, color2, false);
g2.setPaint(gp);
g2.fill(polygon);
}
有人知道一种方法来获取叠加层的一个像素的颜色吗?我不需要在屏幕上看到的颜色,包括背景图片 - 只是叠加层的颜色。
致以最诚挚的问候,
迈克尔
答案 0 :(得分:2)
这有些难看,但有效:
GradientPaint gp = new GradientPaint(0, 0, new Color(255, 0, 0, 50),
10, 10, new Color(128, 255, 0, 150));
ColorModel cm = ColorModel.getRGBdefault();
Rectangle r = new Rectangle(0, 0, 10, 10);
Raster raster = gp.createContext(cm, r, r, new AffineTransform(), null)
.getRaster(0, 0, 10, 10);
int[] rgba = raster.getPixel(5, 5, (int[])null);
或者,您可以将叠加层绘制成BufferedImage(您首先将其清除为透明)。