#iphone #objective-c #cocoa #ipad #cgcontext
#iPhone #objective-c #какао #iPad #cgcontext
Вопрос:
Я понимаю, что есть 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:
Замените эти две строки:
CGContextSetFillColor(g, CGColorGetComponents([[UIColor greenColor] CGColor]));
CGContextEOFillPath(g);
с помощью этих строк:
CGContextSaveGState(g);
CGContextEOClip(g);
CGContextClearRect(g, rect);
CGContextRestoreGState(g);
предполагается rect
, что аргумент был передан вашему drawRect:
методу.
Комментарии:
1. я попробовал это до того, как задал вопрос, и, похоже, он просто перешел на исходный зеленый
2. это тоже не сработает… Все, что он делает, это обрезает изображение и теряет все, что находится за изображением. Не совсем прозрачный.
3. Я собираюсь выяснить другой способ сделать это. Спасибо за помощь, хотя