如何在两条线之间绘制阴影区域

时间:2012-03-08 16:21:03

标签: java swing

如何在某种颜色的两条线之间绘制阴影区域?

我正在使用Graphics2D.drawLine()绘制线条,并在线条间设置半透明的阴影区域。

2 个答案:

答案 0 :(得分:4)

这可以通过GradientPaint

实现

这样的事情:

public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D)g;

    Polygon p = new Polygon();
    p.addPoint(0,100);
    p.addPoint(100,100);
    p.addPoint(100,200);
    p.addPoint(100,200);

    GradientPaint gp = new GradientPaint(0.0f, 100.0f, Color.red,
             200.0f, 200.0f, Color.green, true);
    g2.setPaint(gp);
    g2.fill(p);
}

对于透明度,您需要包含Alpha通道的设置。

g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,
          alpha));

有关工作示例,请参阅this article

答案 1 :(得分:3)

你在想错误的方法。如果要绘制区域,请执行此操作。之后在区域顶部渲染线条。 可以使用Graphics.drawPolygon渲染区域。

有两种方法可以获得半透明效果。最简单的方法(对于纯色)是使用alpha(new Color(0xAARRGGBB,true))创建Color实例并将其用于绘制。 另一种方法是使用Graphics2D.setComposite和AlphaComposite的实例(该方法也会影响不使用颜色的元素的绘制,例如drawImage)。