2012-02-25 85 views
0

在我的应用程序中,我有一个图像(世界地图)作为背景图片。在此背景图片上,有一个颜色渐变透明填充效果的多边形。java获得像素的颜色透明,渐变叠加

这里你可以找到覆盖的代码片段:

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); 

} 

是否有人知道一个方法来获得一个像素的覆盖的的颜色?我不需要颜色,它可以在屏幕上看到,包括背景图片 - 只是覆盖图的颜色。

最好的问候,

迈克尔

回答

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(你必须首先清零透明)。

+0

非常感谢 - 它适用于我的问题。 – Michael 2012-02-27 09:16:06