2012-02-25 12 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

関連する問題