【问题标题】:How can I make a list of line functions into one drawPolygon function with JPanel?如何使用 JPanel 将线函数列表变成一个 drawPolygon 函数?
【发布时间】:2020-05-01 19:15:57
【问题描述】:

有什么方法可以将它放入一个简单的 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));

【问题讨论】:

    标签: java swing graphics jpanel graphics2d


    【解决方案1】:

    创建一个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);
    

    【讨论】:

    猜你喜欢
    • 2020-11-19
    • 2020-08-22
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多