2012-02-29 9 views
5
CGContextRef currentContext = UIGraphicsGetCurrentContext(); 
UIGraphicsBeginImageContext(drawImage.frame.size); 
[drawImage.image drawInRect:CGRectMake(0,0, drawImage.frame.size.width, drawImage.frame.size.height)]; 

CGContextSetRGBStrokeColor(currentContext, 0.0, 0.0, 0.0, 1.0); 
UIBezierPath *path=[self pathFromPoint:currentPoint 
           toPoint:currentPoint]; 

CGContextBeginPath(currentContext); 
CGContextAddPath(currentContext, path.CGPath); 
CGContextDrawPath(currentContext, kCGPathFill); 
drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); 

Nel codice precedente CGContextRef currentContext creato di UIGraphicsGetCurrentContext() e passarlo al CGContextBeginPath CGContextAddPath CGContextDrawPath CurrentContext ha parametro a loro non il suo lavoro per me! Quando sto facendo touchMovie.Il valore UIGraphicsGetCurrentContext passa a CGContextRef non funziona?

Quando passo direttamente UIGraphicsGetCurrentContext() al posto di currentContext funziona per me. Voglio sapere perché è così?

@All Please Please Me per questo problema.

risposta

7

Il problema è che currentContext non è più il contesto attuale dopo l'avvio di un contesto di immagine:

CGContextRef currentContext = UIGraphicsGetCurrentContext(); 
UIGraphicsBeginImageContext(drawImage.frame.size); 
// Now the image context is the new current context. 

così si dovrebbe invertire queste due linee:

UIGraphicsBeginImageContext(drawImage.frame.size); 
CGContextRef currentContext = UIGraphicsGetCurrentContext(); 

Modifica

Come ha notato Nicolas, dovresti chiudere il contesto dell'immagine quando non ne hai più bisogno:

drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); // Add this line. 

Modifica

Si noti inoltre che si sta impostando un colore ictus ma disegno con il riempimento comando.

Così si dovrebbe chiamare il metodo colore appropriato invece:

CGContextSetRGBFillColor(currentContext, 0.0, 1.0, 0.0, 1.0); 
+0

Inoltre, si dovrebbe finire contesto dell'immagine quando non serve più al fine di ripristinare lo stack grafico nel suo stato precedente: 'UIGraphicsEndImageContext();' –

+0

@Sch il suo lavoro per me Grazie Sch – kiran

+0

trovo un altro problema su questo! non riesco a impostare il colore su questo CGContextSetRGBStrokeColor (currentContext, 1.0, 0.0, 0.0, 1.0); se lo metto in rosso è ancora nero! – kiran

1

UIGraphicsBeginImageContext crea un nuovo contesto e la imposta al contesto attuale. Così si dovrebbe fare

CGContextRef currentContext = UIGraphicsGetCurrentContext();

dopoUIGraphicsBeginImageContext. Altrimenti, si recupera un contesto e questo contesto viene immediatamente sostituito da UIGraphicsBeginImageContext.

Problemi correlati