2012-03-08 229 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