【问题标题】:java get color of pixel for transparent, gradient overlayjava获取透明渐变叠加的像素颜色
【发布时间】:2012-03-15 17:51:12
【问题描述】:

在我的应用程序中,我有一张图片(世界地图)作为背景图片。在这张背景图片上,有一个具有颜色渐变透明填充效果的多边形。

在这里你可以找到覆盖的代码sn-p:

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

}

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

最好的问候,

迈克尔

【问题讨论】:

    标签: java colors gradient transparent


    【解决方案1】:

    这有点难看,但有效:

    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(您首先将其清除为透明)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多