我正在使用 CGMutablePathRef 创建任意多边形,因此我可以使用 CGContextClip 在我的上下文中剪辑进一步的绘图。
这具有不包含路径的“边界”像素的非常烦人和不受欢迎的行为。因此,例如,在我的代码片段中,我将一个矩形剪成两半,然后为每一半着色 - 生成的图像留下一条细线,其中路径的边界没有着色:
- (void)drawRect:(CGRect)rect
{
CGContextRef ctxt = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(ctxt, [UIColor whiteColor].CGColor);
CGContextFillRect(ctxt, rect);
CGContextSaveGState(ctxt);
//Create a path to clip a triangle:
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddLineToPoint(path, NULL, rect.size.width, 0);
CGPathAddLineToPoint(path, NULL, 0, rect.size.height);
CGContextAddPath(ctxt, path);
CGContextClip(ctxt);
//Fill the triangle with dark gray:
CGContextSetFillColorWithColor(ctxt, [UIColor darkGrayColor].CGColor);
CGContextFillRect(ctxt, rect);
CGPathRelease(path);
CGContextRestoreGState(ctxt);
//Create a path to clip a triangle:
path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, rect.size.height);
CGPathAddLineToPoint(path, NULL, rect.size.width, 0);
CGPathAddLineToPoint(path, NULL, rect.size.width, rect.size.height);
CGContextAddPath(ctxt, path);
CGContextClip(ctxt);
//Fill the triangle with dark Gray:
CGContextSetFillColorWithColor(ctxt, [UIColor darkGrayColor].CGColor);
CGContextFillRect(ctxt, rect);
CGPathRelease(path);
}
如何以包含“边框”像素的方式剪辑上下文?