开罗的行程对齐

时间:2018-12-26 15:59:52

标签: c ruby gtk3 cairo

许多图形包允许用户选择要在形状周围绘制区域边界的位置;沿形状的内部,外部或中心。例如,这显示了相同的正方形,并分别沿中心,内部和外部绘制了边框:

enter image description here

我可以根据笔触的宽度向上/向下缩放路径,但是我想先检查一下是否对此内置了支持。

我正在使用Ruby,但是如果有C方法,那么它在Ruby绑定中也可能可用。

在开罗,是否有一种方法可以在路径的外部或内部而不是沿中心绘制笔划?

1 个答案:

答案 0 :(得分:1)

不,没有内置这种方法。

一个人可能会用一个临时表面来近似此值,该临时表面以后会用作遮罩。例如,要进行“外部”操作,首先用“透明”填充临时表面,然后以所需线宽的两倍笔触某个“不透明”,最后用“透明”填充形状以去除内部的线宽。然后将所得的表面用作遮罩。

“内部”将是相似的,但有一个额外的技巧:同样,透明的表面和笔触具有两倍的线宽。现在,需要删除此笔触的外部。为此,需要一条曲折规则为奇数的路径。在此路径上添加一个表面大小的矩形会反转该路径,从而允许通过填充删除外部的所有内容。 对于一个非零的缠绕规则……我没有任何直接的想法(嗯,另一个临时表面然后通过使用SUBTRACT的全表面涂料反转了?)。