3

我想在绘制矩形后填充 CGCntext 的剩余部分?我怎样才能做到这一点?谢谢!


但问题是,我设置了 cgcontext kCGBlendModeClear 的混合模式。我想让上下文中的小矩形透明。如果先绘制背景,我还能在矩形中看到图像吗?

4

3 回答 3

3

如果要填充上下文(其框架为bigRect),除了其中的一个矩形(其框架为smallRect):

CGContextBeginPath(context);
CGContextAddRect(context, bigRect);
CGContextAddRect(context, smallRect);
CGContextSetFillColorWithColor(context, color);
CGContextEOFillPath(context, bigRect);
于 2012-12-20T09:51:57.673 回答
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];
于 2012-12-20T03:06:26.093 回答
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
于 2012-12-20T09:01:00.477 回答