2012-03-08 5 views
2

Как вы рисуете заштрихованную область между двумя линиями определенного цвета?Как нарисовать затененную область между двумя линиями

Я использую Graphics2D.drawLine(), чтобы нарисовать линии и получить полупрозрачную заштрихованную область между линиями.

+1

Я не уверен, как это сделать, но вы не можете использовать более яркий цвет, чем той, которая используется, чтобы нарисовать линию, чтобы сделать еще одну линию, которая будет выступать в качестве тень, сделав что-то вроде yourChosenColor.brighter(). более яркое или темное(). darker(), которое вы предпочитаете. –

ответ

3

Вы думали не так. Если вы хотите нарисовать область, сделайте это. Затем визуализируйте линии поверх области. Области могут быть отображены с помощью Graphics.drawPolygon.

Существует два способа получения полупрозрачности. Самый простой способ (для сплошного цвета) - создать экземпляр Color с альфа (новый цвет (0xAARRGGBB, true) и использовать его для рисования. Другим способом является использование Graphics2D.setComposite с экземпляром AlphaComposite (этот метод также влияет на чертеж элемента, не использовать цвета, например DrawImage)

+0

Мой +1 приходит сейчас :-) –

4

Это должно возможно с GradientPaint

Somthing так:.

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

для обеспечения прозрачности необходимо включить параметры для альфа-канал.

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

Для рабочих примеров см this article

+0

+1 См. Также этот [пример] (https://sites.google.com/site/drjohnbmatthews/kineticmodel), который использует полупрозрачную градиентную краску. – trashgod

+0

Мой +1 приходит сейчас :-) –

Смежные вопросы