我在 Core Graphics 中遇到问题,其中两个本应组合在一起的形状在它们的侧面是对角线时显示它们之间的接缝。这导致了问题。我可以通过重叠形状来“修复”这个问题。这适用于简单的东西,但是当形状更复杂时,东西开始分崩离析。
这是一个简单的例子:
[[UIColor blackColor] setFill];
[path fill]; //fills the entire background black
UIBezierPath *path1 = [UIBezierPath bezierPath];
[path1 moveToPoint:CGPointMake(0.0f, 0.0f)];
[path1 addLineToPoint:CGPointMake(100, 0.0f)];
[path1 addLineToPoint:CGPointMake(50, rect.size.height)];
[path1 addLineToPoint:CGPointMake(0, rect.size.height)];
[path1 closePath];
UIBezierPath *path2 = [UIBezierPath bezierPath];
[path2 moveToPoint:CGPointMake(100, 0)];
[path2 addLineToPoint:CGPointMake(rect.size.width, 0)];
[path2 addLineToPoint:CGPointMake(rect.size.width, rect.size.height)];
[path2 addLineToPoint:CGPointMake(50, rect.size.height)];
[path2 closePath];
[[UIColor lightGrayColor] setFill];
[path1 fill];
[path2 fill];
这会产生一个看起来像这样的接缝:
这是非常有问题的,因为这发生在CGPathApply
我用来处理形状的回调函数中(我将形状划分,进行一些处理并将它们重新组合在一起)。因此,很难确定应该如何移动这些形状,以便在不扭曲形状的情况下移除接缝(通过重叠)。特别是因为其中一些形状相当复杂(不是简单的矩形)。
CGContextSetShouldAntialias(context, NO);
我确实发现关闭抗锯齿(
有任何想法吗?