2012-08-28 4 views
1

J'expérimente en créant une application simple de doigt-peinture sur l'ipad. Je suis capable de tracer un chemin vers l'écran correctement, mais je veux avoir une option qui efface complètement l'écran de tous les chemins tracés. Le code que j'ai actuellement efface le contexte, mais quand j'appelle le bloc de code de dessin tous les chemins réapparaissent sur l'écran.Comment effacer un CGContextRef?

- (void)drawRect:(CGRect)rect 
{ 
    //Drawing code 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    if(clearContext == 0){ 

     CGContextSetLineWidth(context, 6); 
     CGContextSetRGBStrokeColor(context, 1, 0, 0, 1); 
     CGContextAddPath(context, drawingPath); 

     CGContextStrokePath(context); 
    } 
    if(clearContext == 1){ 

     //This is the code I currently have to clear the context, it is clearly wrong 
     //Just used as experimentation. 

     CGContextSetBlendMode(context, kCGBlendModeClear); 
     CGContextAddPath(context, drawingPath); 
     CGContextStrokePath(context); 
     clearContext = 0; 

    } 

} 

Répondre

4

im en supposant drawingPath est un CGPath ... êtes-vous Clearing que CGPath? qui pourrait être la cause de votre problème

dans l'action pour effacer votre chemin, faites:

CGPathRelease(drawingPath); 
drawingPath = CGPathCreateMutable(); 
[self setNeedsDisplay]; 

et faire le dessin normal, vous faites habituellement. si le chemin est vide, rien ne sera dessiné

+0

Fonctionne parfaitement ... Merci! – Michael