Код CoreGraphics не делает полую форму, как ожидалось - PullRequest
0 голосов
/ 07 января 2012

Вот код, который у меня есть:

CGContextRef context = UIGraphicsGetCurrentContext();
    CGColorRef redColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0].CGColor;

CGRect rectangle = CGRectMake(100, 100, 100, 100);
    CGRect inside = CGRectMake(120, 120, 60, 60);



CGContextSetFillColorWithColor(context, redColor);
CGContextSetBlendMode(context, kCGBlendModeNormal);
CGContextFillRect(context, rectangle);
CGContextSaveGState(context);

CGContextSetBlendMode(context, kCGBlendModeSourceOut);
CGContextFillRect(context, inside);
CGContextRestoreGState(context);

Я пытаюсь сделать внутреннюю форму полой, но вместо этого она дает мне красный квадрат (как expecetd) с черным квадратом в середине,когда UIView на заднем плане белый.

Есть идеи, как сделать фигуру прозрачной?

1 Ответ

5 голосов
/ 08 января 2012

Есть несколько способов, которыми вы можете заполнить свой прямоугольник полым внутренним прямоугольником.Один из способов - создать путь, содержащий оба прямоугольника, и заполнить его, используя четно-нечетное правило .

CGContextRef gc = UIGraphicsGetCurrentContext();
CGContextBeginPath(gc);
CGContextAddRect(gc, CGRectMake(100, 100, 100, 100));
CGContextAddRect(gc, CGRectMake(120, 120, 60, 60));
CGContextSetFillColorWithColor(gc, [UIColor redColor].CGColor);
CGContextEOFillPath(gc);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...