Как я могу сделать список линейных функций в одной функции drawPolygon с помощью JPanel? - PullRequest
0 голосов
/ 15 января 2020

Есть ли способ, которым я могу поместить это в простой draw / fillPolygon? Я пытаюсь нарисовать что-то, что было бы намного проще и намного менее излишним с использованием функции многоугольника, но я не уверен, как использовать это с JPanel.

g2D.draw(new Line2D.Double(0, 4, 3,4));
g2D.draw(new Line2D.Double(3, 4, 5,3));
g2D.draw(new Line2D.Double(5, 3, 12,3));
g2D.draw(new Line2D.Double(12, 3, 11,2));
g2D.draw(new Line2D.Double(11, 2, 9,1));
g2D.draw(new Line2D.Double(9, 1, 3,1));
g2D.draw(new Line2D.Double(3, 1, 0,2));
g2D.draw(new Line2D.Double(0,2,0,3));
g2D.draw(new Line2D.Double(0, 3, 0,4));

1 Ответ

2 голосов
/ 15 января 2020

Создайте Path2D.

Path2D.Double path = Path2D.Double();
path.moveTo(0, 4);
path.lineTo(3, 4);
path.lineTo(5, 3);
path.lineTo(12, 3);
path.lineTo(11, 2);
path.lineTo(9, 1);
path.lineTo(3, 1);
path.lineTo(0, 2);
path.lineTo(0, 3);
path.lineTo(0, 4);
g2D.draw(path);

Или используйте drawPolyline(int[] xPoints, int[] yPoints, int nPoints).

g2D.drawPolyline(new int[] { 0, 3, 5, 12, 11, 9, 3, 0, 0, 0 },
                 new int[] { 4, 4, 3,  3,  2, 1, 1, 2, 3, 4 },
                 10);

Или используйте drawPolygon(int[] xPoints, int[] yPoints, int nPoints), где вам не нужно повторять первую точку в конце.

g2D.drawPolygon(new int[] { 0, 3, 5, 12, 11, 9, 3, 0, 0 },
                new int[] { 4, 4, 3,  3,  2, 1, 1, 2, 3 },
                9);

Или создайте Polygon и используйте его снова, не повторяя первая точка:

Polygon polygon = Polygon(new int[] { 0, 3, 5, 12, 11, 9, 3, 0, 0 },
                          new int[] { 4, 4, 3,  3,  2, 1, 1, 2, 3 },
                          9);
g2D.drawPolygon(polygon);
...