Ho due UIImageView, prima sopra il secondo. Voglio cancellare il pezzo della prima immagine con il pennello (il pennello è un'immagine png con bordo sfumato) per rendere visibile il pezzo della seconda immagine.Come cancellare parte di UIImageView con png-brush e UIBezierPath
ho fatto in questo modo:
1) touchesMoved e [auto setNeedsDisplayInRect: [auto brushRectForPoint: touch_location]];
2) a (vuoto) drawRect: (CGRect) rect chiamo [_brush drawAtPoint: touch_location blendMode: kCGBlendModeDestinationOut alpha: 1];
Funziona bene, ma la frequenza di touchesMoved non è sufficiente, se l'utente muove un dito troppo velocemente, allora ho un sacco di linee corte (o anche punti) invece di una linea lunga.
Ho trovato informazioni di UIBezierPath e example ma autore solo disegna linee dal percorso:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextAddPath(context, path);
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineWidth(context, self.lineWidth);
CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor);
CGContextStrokePath(context);
Come posso disegnare il mio pennello PNG con UIBezierPath?
Ho bisogno di qualcosa come questo
Grazie mille!
Che ne dici di una media mobile del punto di contatto? Ciò introdurrà un certo ritardo (che può essere o non essere desiderabile) ma appianare i "salti". Più lungo è il periodo MA, più liscio, ma maggiore è anche il ritardo. – verec
Ok, capisco, ma ovviamente il ritardo non è buono. Comunque grazie per la tua idea. Potrei provare a fare qualcosa con questo. –