Как нарисовать затененную область между двумя линиями - PullRequest
2 голосов
/ 08 марта 2012

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

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

Ответы [ 2 ]

4 голосов
/ 08 марта 2012

Это должно быть возможно с 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);
}

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

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

Рабочие примеры см. в этой статье

3 голосов
/ 08 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...