drawing - 开罗测试文本是否重叠

标签 drawing cairo

使用 Cairo,我将一些文本放置在随机位置,并且我需要知道它们是否与之前绘制的一些任意形状重叠。我可以将路径剪裁到之前的绘图,如果发生任何剪裁,则意味着存在重叠。然而,Cairo 似乎没有任何函数来判断是否发生了裁剪。

有什么办法可以轻松完成我想要的事情吗?我想我只是想看看两个形状是否相交。

最佳答案

根据您想要获得的质量,您可以使用 cairo_lines_extentscairo_fill_extentscairo_text_extents 并处理边界框。

更好的方法是仅计算文本的边界框,并使用 cairo_in_fillcairo_in_lines 检查最后一条路径的四个角。最大误差是从单个字形的形状到其边界框的距离,但这可能足以满足您的目的。

最后一个选项是展平文本并检查任何单个点,如上一步所示。

关于drawing - 开罗测试文本是否重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1590381/

相关文章:

javascript - gjs cairo 上下文绘图未显示在杂乱窗口中

haskell - 无法在 Windows 上安装 cairo haskell 绑定(bind)

Android - 在 SurfaceView 上绘制简单的正弦波

javascript - 在 Canvas 上画花哨的圆有奇怪的效果

iphone - 为什么 UIBezierPath 比 Core Graphics 路径快?

c - 通过开罗表面绘画时清除 X 窗口的正确方法是什么

node.js - 使用 Node Canvas 从右到左编写段落,基于开罗的实现

c - 开罗的笔划对齐

Javascript - 动画管或线来写入文本

delphi - 将多边形缩小为 TPoint 数组?