Rysowanie obramowanie drogi

0

Witam, rysuje drogę poprzez GeneralPath do którego dodaje kolejne punkty:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;
    if (path != null) {
        drawPath(g2);
    }
}

private void drawPath(Graphics2D g) {
        Paint originalPaint = g.getPaint();
        Stroke originalStroke = g.getStroke();
        try {
            g.setPaint(RED);
            g.setStroke(new BasicStroke(15f, CAP_ROUND, JOIN_ROUND));
            g.draw(path);
        } finally {
            g.setPaint(originalPaint);
            g.setStroke(originalStroke);
        }
}

Wszystko ogólnie działa, ale chciałbym dodatkowo, żeby dookoła ścieżki widoczne było obramowanie.
Macie jakiś pomysł jak to osiągnąć?

0

Z przykładu znalezionego w internecie http://www.java2s.com/Code/Java/2D-Graphics-GUI/CustomStrokes.htm udało mi się uzyskać zbliżony efekt:

public class DoubleStroke implements Stroke {
        private BasicStroke stroke1;
        private BasicStroke stroke2;

        public DoubleStroke(float width1, float lineWidth) {
          stroke1 = new BasicStroke(width1, CAP_ROUND, JOIN_ROUND);
          stroke2 = new BasicStroke(lineWidth, CAP_ROUND, JOIN_ROUND);
        }

        public Shape createStrokedShape(Shape s) {
          Shape outline = stroke1.createStrokedShape(s);
          return new Area(stroke2.createStrokedShape(outline));
        }
}

Problem polega na tym, że dla każdego punktu rysowany jest okrąg w środku.

0

Drobna poprawka new Area była do testów :P Ogólnie powinno być samo stroke2.createStrokedShape(outline)

1 użytkowników online, w tym zalogowanych: 0, gości: 1