【问题标题】:Fill polygon with holes用孔填充多边形
【发布时间】:2018-08-18 09:28:09
【问题描述】:

我有一个带孔的形状多边形,我想用 pycairo 填充它。

有没有一种简单的方法可以将该多边形分割成多个覆盖同一表面的无孔多边形?

或者有没有更好的方法来使用 pycairo 用孔填充多边形?

【问题讨论】:

    标签: shapely pycairo


    【解决方案1】:

    我想出了一个使用 cairo 裁剪功能的解决方案:

    def fill_polygon(self, context, polygon):
        context.set_fill_rule(cairo.FILL_RULE_EVEN_ODD)
    
        poly = polygon.exterior
        for x, y in poly.coords:
            context.line_to(x, y)
        context.clip_preserve()
    
        for poly in polygon.interiors:
            context.move_to(*poly.coords[-1])
            for x, y in poly.coords:
                context.line_to(x, y)
    
        context.fill()
        context.reset_clip()
    

    【讨论】: