我想在绘制一个矩形后填充CGCntext的剩余部分?我怎样才能做到这一点?谢谢!
但问题是,我设置了cgcontext kCGBlendModeClear的混合模式。我想让上下文中的小矩形变得透明。如果首先绘制背景,我仍然可以在矩形中看到图像吗?
答案 0 :(得分:2)
如果要填充上下文(其框架为bigRect
),除了其中的矩形(其框架为smallRect
)外:
CGContextBeginPath(context);
CGContextAddRect(context, bigRect);
CGContextAddRect(context, smallRect);
CGContextSetFillColorWithColor(context, color);
CGContextEOFillPath(context, bigRect);
答案 1 :(得分:0)
先做背景......
CGRect bounds = [self bounds];
[[UIColor blackColor] set];
UIBezierPath* backgroundPath = [UIBezierPath bezierPathWithRect:bounds];
[backgroundPath fill];
CGRect innerRect = CGRectMake(self.bounds-10,
self.bounds-10,
self.bounds.width-20
self.bounds.height-20);
[[UIColor redColor] set];
UIBezierPath* foregroundPath = [UIBezierPath bezierPathWithRect:innerRect];
[foregroundPath fill];
答案 2 :(得分:0)
绘制背景,然后使用CGContextClearRect
清除您想要透明的区域。
任意形状:
// do your foreground drawing
CGPathRef arbitraryShape; // asign your arbitrary shape
CGContextBeginPath(ctx);
CGContextAddRect(ctx, bounds); // rect in full size of the context
CGContextAddPath(ctx, arbitraryShape); // set the area you dont want to be drawn on
CGContextClip(ctx);
// do your background drawing