我正在尝试在 iOS 中执行多个 CGPath 的联合。我怎样才能做到这一点?
我已经尝试使用“path.AddPath()”添加组合路径,但我得到了这个奇怪的伪像,就好像它在做一个连接而不是一个联合。我也尝试过使用“path.CopyByStrokingPath()”,但它也留下了这些奇怪的空白。我注意到 CopyByStrokingPath 的参数是“CGLineJoin”,但我真的想要“CGLineUnion”,但这似乎不存在。
基本上您在这里看到的是,我在每个对象周围制作一个圆形路径,然后在每个对象之间制作矩形路径以填充间隙。然后我将所有路径组合起来并在它们之间添加这些尴尬的空白(当我想要它完全填充时)。我可以让每个形状(圆形和矩形)成为一个单独的层,然后空间消失,但是我有 15 个单独的层只用于一张图......我真的只想组合路径并将它绘制到一个 CAShape 上图层
引用帖子
最佳答案
事实证明,由点和线创建的矩形与通过 CGPath.AddRect 创建的矩形之间存在很大差异。
CGPath path = ...
CGRect rectToDraw = ...
CGAffineTransform transform = ....
path.AddRect (transform, rectToDraw);
当您想要重叠形状并让重叠部分像逻辑并集一样完全填充时,上述方法有效。
下面的代码不会像 Union 那样重叠,并且会产生原始帖子的屏幕截图中所见的尴尬间隙。它似乎与其他一些逻辑表达式重叠
CGPath path3 = new CGPath ();
path3.MoveToPoint (100, 100);
path3.AddLineToPoint (100, 250);
path3.AddLineToPoint (350, 250);
path3.AddLineToPoint (350, 100);
path3.CloseSubpath ();
关于c# - 联合或逻辑或在两个 CGPaths(或 CAShapeLayers)上创建一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28910721/