Java如何绘制和填充有孔的多边形

LBe*_*ker 4 java jts awt polygon draw

我目前正在尝试在 Java 中绘制并填充一个有洞的多边形。通常这不会是一个大问题,因为我会绘制外环,然后用背景颜色绘制内环。

但问题是,多边形显示在应该通过孔“看到”的图像上方。

我正在用 Java 编写代码,并使用JTS 拓扑套件来处理我的几何数据。

这是我当前的代码,它只是绘制边框并用颜色填充多边形。

private void drawPolygon(com.vividsolutions.jts.geom.Polygon gpoly, Color color, Graphics2D g2d){

    java.awt.Polygon poly = (java.awt.Polygon)gpoly;

    for(Coordinate co : gpoly.getExteriorRing().getCoordinates() {
        poly.addPoint(co.x, co.y);
    }
    g2d.setColor(col);
    g2d.fill(poly);

    g2d.setColor(Color.BLACK);
    g2d.draw(poly);
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是java.awt.Polygon不支持带孔的多边形。

And*_*son 5

  • 使用 thePolygon作为 an 的基础Area(例如称为polygonShape)。
  • 创建一个Ellipse2D“洞”,然后Area为其建立一个 ( ellipseShape)。
  • 使用Area.subtract(Area)类似的东西:

    Area polygonWithHole = polygonShape.subtract(ellipseShape);
    
    Run Code Online (Sandbox Code Playgroud)

  • *“是的,这个答案做到了”*很高兴您能解决问题。并为“拿起球并带着它跑”的主动性加 1。*“感谢您和 brimborium 的帮助”* 提示:添加 @brimborium(或任何人,`@` 很重要)以*通知*新评论的人。 (3认同)