开罗路径上的布尔运算?

7

有没有办法通过 Cairo 组合两个路径,如并集、差集和交集等布尔运算?我正在开发一个矢量图形应用程序,使用 Cairo 进行渲染,并希望使用户能够以这种方式组合路径,但我找不到在 Cairo 中实现它的方法。

2个回答

2

我还没有找到使用cairo库实现这一点的方法。但这是我一直在寻找的功能。当(例如)描边两个路径的组合时,ntd提到的混合运算符似乎无法做到这一点,这将绝对有所帮助。

与此同时,我正在尝试编写inkscape脚本,并让inkscape执行联合/差异操作。对于我正在解决的问题来说可以接受,但肯定不适用于你的问题。您是否已经尝试过使用cairo或任何其他SVG库?经过几天的搜索,似乎并不容易 :/


ps - path intersect/combine/overlay被列为cairo网站可能的Summer of Code项目之一。http://cairographics.org/summerofcode/ideas/ - ImAlsoGreg

0

使用运算符组合路径对我来说毫无意义。从“线条 AND 曲线 OR 弧线”中你能得到什么?

相反,您可以使用cairo_set_operator()应用合成运算符:它将设置当前绘图操作(无论是cairo_fill()cairo_stroke()还是其他任何操作)与表面旧内容的混合方式。


1
我所说的一个例子是Inkscape通过布尔运算组合路径的方式:http://www.usinginkscape.com/node/34。我想大多数这些效果都可以通过一系列的合成操作来实现,但两个图形路径相交的地方可能不会有正确的线段连接。 - Adrian Lopez
我仍然不理解这个问题:inkscape自版本0.46以来就使用cairo:http://wiki.inkscape.org/wiki/index.php/Release_notes/0.46#Speed_and_interactivity - ntd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接