2013-09-06 6 views
6

sto disegnando un CGContext e l'utilizzo di una maschera a base di CGImageRef:Come posso ripristinare o cancellare la maschera di ritaglio associata a un CGContext?

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextClipToMask(context, rect, _firstMaskImageRef); 
CGContextSetFillColorWithColor(context, color); 
CGContextFillRect(context, rect); 

ho una seconda maschera che ho poi voglio passare a:

CGContextClipToMask(context, rect, _secondMaskImageRef); 
CGContextSetFillColorWithColor(context, color); // color has changed FWIW 
CGContextFillRect(context, rect); // as has rect 

Ma, questo interseca i due maschere invece di sostituire il primo.

Come si può (se possibile) cancellare o ripristinare la maschera di ritaglio per un CGContext?

risposta

15

È possibile salvare lo stato grafico prima di impostare la maschera di ritaglio, e poi ripristinarlo in seguito, in questo modo: (? 3+)

versioni
CGContextSaveGState (context); 
...Set your first clipping mask, fill it, etc. 
CGContextRestoreGState (context); 
...Do other stuff 
0

successive del Swift utilizzare la seguente sintassi invece:

context.saveGState() 
// set your clipping mask, etc. 
context.restoreGState() 
// everything's back to normal 
0

Per ripristinare il maschera di ritaglio, utilizzare:

CGContextResetClip(context); 
Problemi correlati