Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java绘制不完整多边形_Java_User Interface_Graphics_Polygon - Fatal编程技术网

如何使用Java绘制不完整多边形

如何使用Java绘制不完整多边形,java,user-interface,graphics,polygon,Java,User Interface,Graphics,Polygon,我想做的是使用Java绘制一个不完整的多边形。我已经知道如何在一次拍摄中只绘制多边形,甚至填充多边形。我也可以使用线段绘制不完整的多边形,但问题是基本行程。JOIN_斜角不适用于线段。以下是我如何处理线段的方法: //polygon is not Java's Polygon, my own implementation, and the methods do as //they imply for(int i = 0; i < polygon.getNumberOfPoints(); i

我想做的是使用Java绘制一个不完整的多边形。我已经知道如何在一次拍摄中只绘制多边形,甚至填充多边形。我也可以使用线段绘制不完整的多边形,但问题是
基本行程。JOIN_斜角
不适用于线段。以下是我如何处理线段的方法:

//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]));
    }
}
//polygon不是Java的polygon,我自己的实现,方法如下
//他们暗示
对于(int i=0;i

这工作很好,但它不完全工作,我想它。
g.setStroke(/*这里的stuff*/)对关节没有影响。

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

Path2D.Double path=新的Path2D.Double(); 对于(int i=0;i创建一个Path2D.Double,但不要调用closePath()

Path2D.Double path=新的Path2D.Double(); 对于(int i=0;i我完全错过了一个方法

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

这解决了我的问题。

我完全错过了一个方法

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

这解决了我的问题。

我尝试使用Path2D.Double,但问题是多边形的最后一端将从我上次单击的位置跟随我的鼠标,甚至使用Path2D.Double。它的反应似乎与绘制第一个点和最后一个点不相等的多边形相同,java无论如何都会在它们之间绘制一条线。我会再试一次,看看我是否看过头了。我尝试过使用Path2D.Double,但问题是多边形的最后一端会从我上次单击的位置跟随我的鼠标,甚至使用Path2D.Double。它的反应似乎与绘制第一个点和最后一个点不相等的多边形相同,无论如何,java将在它们之间划清界限。我会再试一次,看看我是否看过头了。