2012-03-08 224 views
2

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

我使用Graphics2D.drawLine()来绘制线条,并在线条之间有一个半透明的阴影区域。

+1

我不知道,如何做到这一点,但你不能使用除用于绘制线条,画出另一条线,这将充当一个更亮的颜色通过做一些像yourChosenColor.brighter(),更明亮或更暗(),darker(),这是你喜欢的。 – 2012-03-08 16:55:49

回答

3

您正在考虑错误的方法。如果你想绘制一个区域,请这样做。之后渲染区域顶部的线条。 可以使用Graphics.drawPolygon呈现区域。

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

+0

我的+1现在来:-) – 2012-03-09 02:49:49

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

+0

+1另请参阅此相关的[示例](https://sites.google.com/site/drjohnbmatthews/kineticmodel)使用半透明渐变涂料。 – trashgod 2012-03-08 21:16:36

+0

现在我的+1 :-) – 2012-03-09 02:49:41