Как нарисовать неполный полигон с помощью Java - PullRequest
0 голосов
/ 04 августа 2010

Что я хочу сделать, так это нарисовать неполный полигон, используя Java.Я понял, как нарисовать только многоугольник за один выстрел или даже заполнить многоугольник.Я также могу нарисовать неполный многоугольник, используя отрезки, но проблема в том, что BasicStroke.JOIN_BEVEL не относится к отрезкам.Вот как я делаю это с отрезками:

//polygon is not Java's Polygon, my own implementation, and the methods do as
//they imply
for(int i = 0; i < polygon.getNumberOfPoints(); i++){
    Point2D.Double first = polygon.getPoint(i);
    Point2D.Double second = new Point2D.Double();
    if(polygon.getPoint(i+1) != null){
        second = polygon.getPoint(i+1);
        trans1 = /* some graphic translation of first */
        trans2 = /* some graphic translation of second */
        g.setColor(polygon.getColor());
        g.setStroke(new BasicStroke(polygon.getWeight(), BasicStroke.JOIN_BEVEL, BasicStroke.CAP_BUTT));
        g.draw(new Line2D.Double(trans1[0], trans1[1], trans2[0], trans2[1]));
    }
}

это работает просто отлично, но не работает точно так, как мне бы хотелось.g.setStroke(/*stuff here*/); не влияет на суставы.

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Ну, я полностью пропустил метод.

g.drawPolyline(int[] xCoords, int[] yCoords, int numPoints)

Это решило мою проблему.

0 голосов
/ 04 августа 2010

Создайте Path2D.Double, но только не вызывайте closePath ().

Path2D.Double path = new Path2D.Double();
for (int i = 0; i < polygon.getNumberOfPoints(); i++) {
  Point2D.Double point = polygon.getPoint(i);
  trans1 = /* some graphic translation */;
  if (i == 0)
    path.moveTo(trans1[0], trans1[1]);
  else
    path.lineTo(trans1[0], trans2[0]);
}
g.setColor(polygon.getColor());
g.setStroke(new BasicStroke(polygon.getWeight(), BasicStroke.JOIN_BEVEL, BasicStroke.CAP_BUTT));
g.draw(path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...