代码之家  ›  专栏  ›  技术社区  ›  Aaron Christiansen

开罗的笔划对齐

  •  1
  • Aaron Christiansen  · 技术社区  · 7 年前

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

    enter image description here

    我可以根据笔划的宽度上下缩放路径,但我想先检查是否有内置的支持。

    我使用的是Ruby,但是如果有一个C方法,那么Ruby绑定中也可能有这个方法。

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Uli Schlachter    7 年前

    不,没有内置这样的方法。

    人们可能会使用一个临时表面来近似这一点,该表面后来用作遮罩。例如,要进行“外部”操作,首先使用“透明”填充临时曲面,然后使用两倍于所需线宽的“不透明”笔划,最后使用“透明”填充形状以去除线宽的内部部分。然后,生成的曲面可以用作遮罩。

    “内部”类似,但有一个额外的技巧:同样,透明的表面和笔划是线条宽度的两倍。现在需要移除此笔划的外部部分。为此,需要一条具有奇偶缠绕规则的路径。将曲面大小的矩形添加到此路径将反转路径,从而允许通过填充移除外部的所有内容。 对于非零绕组规则。。。我没有任何直接的想法(好吧,另一个临时表面,然后通过使用操作符SUBTRACT的全表面绘制进行反转?)。

    推荐文章