3

rect を描画した後、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

背景を描画してから、 を使用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 に答える
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 に答える