Java получить цвет пикселя для прозрачного, градиентного наложения - PullRequest
0 голосов
/ 25 февраля 2012

В моем приложении у меня есть изображение (карта мира) в качестве фонового изображения.На этом фоновом изображении есть многоугольник с цветным градиентом и прозрачным эффектом заполнения.

Здесь вы найдете фрагмент кода наложения:

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

}

Кто-нибудь знает способ получения цвета одного пикселя наложения ?Мне не нужен цвет, который можно увидеть на экране, включая фоновое изображение - только цвет наложения.

С уважением,

Майкл

1 Ответ

2 голосов
/ 25 февраля 2012

Это несколько уродливо, но работает:

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 (который вы сначала очистили до прозрачного).

...