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

2023-12-23

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

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

我正在用 Java 编写代码并使用JTS 拓扑套件 http://tsusiatsoftware.net/jts/main.html用于我的几何数据。

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

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);
}

Sadly java.awt.Polygon https://docs.oracle.com/javase/7/docs/api/java/awt/Polygon.html不支持带孔的多边形。


  • Use the Polygon作为基础Area(例如称为polygonShape).
  • 创建一个Ellipse2D对于“洞”,然后建立一个Area为了它 (ellipseShape).
  • Use Area.subtract(Area) https://docs.oracle.com/javase/8/docs/api/java/awt/geom/Area.html#subtract-java.awt.geom.Area-就像是:

    Area polygonWithHole = polygonShape.subtract(ellipseShape);
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java如何绘制和填充有孔的多边形 的相关文章

随机推荐