【问题标题】:How to draw an incomplete Polygon using Java如何使用 Java 绘制不完整的多边形
【发布时间】:2010-08-04 17:51:50
【问题描述】:

我要做的是使用 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*/); 对关节没有影响。

【问题讨论】:

    标签: java user-interface graphics polygon


    【解决方案1】:

    我完全错过了一个方法。

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

    这解决了我的问题。

    【讨论】:

      【解决方案2】:

      创建一个 Path2D.Double,但不要调用 closePath()。

      Path2D.Double 路径 = 新 Path2D.Double(); for (int i = 0; i

      【讨论】:

      • 我尝试使用 Path2D.Double,但问题是多边形的最后一端会从我点击的最后一个位置跟随我的鼠标,即使使用 Path2D.Double 它似乎也有反应与绘制第一个点和最后一个点不相等的多边形的方式相同,java 无论如何都会在它们之间绘制一个 ling。我会再试一次,看看我是否看过一些东西。
      猜你喜欢
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 2015-08-02
      • 2019-06-23
      • 1970-01-01
      • 2011-01-16
      • 2017-10-13
      • 1970-01-01
      相关资源
      最近更新 更多