使用 Cairo,我将一些文本放置在随机位置,并且我需要知道它们是否与之前绘制的一些任意形状重叠。我可以将路径剪裁到之前的绘图,如果发生任何剪裁,则意味着存在重叠。然而,Cairo 似乎没有任何函数来判断是否发生了裁剪。
有什么办法可以轻松完成我想要的事情吗?我想我只是想看看两个形状是否相交。
最佳答案
根据您想要获得的质量,您可以使用 cairo_lines_extents
、cairo_fill_extents
和 cairo_text_extents
并处理边界框。
更好的方法是仅计算文本的边界框,并使用 cairo_in_fill
或 cairo_in_lines
检查最后一条路径的四个角。最大误差是从单个字形的形状到其边界框的距离,但这可能足以满足您的目的。
最后一个选项是展平文本并检查任何单个点,如上一步所示。
关于drawing - 开罗测试文本是否重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1590381/