Как очистить EOFill / Fill?

#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. Я собираюсь выяснить другой способ сделать это. Спасибо за помощь, хотя