Как очистить EOFill / Fill? - PullRequest
1 голос
/ 02 ноября 2011

Я понимаю, что существует CGContextClearRect, хотя он позволяет вам очистить все внутри класса drawRect.Как выбрать один CGContextRef и очистить его вместо этого?для моего случая мой код выглядит так:

//Put clearing syntax here
if(dp.gPoints == nil || dp.gPoints->size() < 1)
    return;
CGContextBeginPath(g);
vector<CGPoint>::iterator k = dp.gPoints->begin();
CGContextMoveToPoint(g, (*k).x, (*k).y);
++k;
while(k != dp.gPoints->end()){
    CGContextAddLineToPoint(g, (*k).x, (*k).y);
    ++k;
}
vector<CGPoint>::reverse_iterator L = dp.dPoints->rbegin();
while(L != dp.doodlePoints->rend()){
    CGContextAddLineToPoint(g, (*L).x, (*L).y);
    ++L;
}
//CGContextAddLineToPoint(g, (*k).x, (*k).y);
CGContextSetFillColor(g, CGColorGetComponents([[UIColor greenColor] CGColor]));
CGContextEOFillPath(g);

1 Ответ

1 голос
/ 02 ноября 2011

Замените эти две строки:

CGContextSetFillColor(g, CGColorGetComponents([[UIColor greenColor] CGColor]));
CGContextEOFillPath(g);

с этими строками:

CGContextSaveGState(g);
CGContextEOClip(g);
CGContextClearRect(g, rect);
CGContextRestoreGState(g);

при условии, что rect был аргумент, переданный вашему drawRect: методу.

...