2013-07-16 10 views
6

Ich habe zwei UIImageView, zuerst über Sekunde. Ich möchte ein Stück des ersten Bildes mit Pinsel löschen (Pinsel ist ein Png-Bild mit weicher Kante), um ein Stück des zweiten Bildes sichtbar zu machen.Wie lösche ich ein Stück UIImageView mit Png-Pinsel und UIBezierPath

Das habe ich auf diese Weise:

1) touchesMoved und [self setNeedsDisplayInRect: [self brushRectForPoint: touch_location]];

2) bei (void) drawRect: (CGRect) rect Ich nenne [_brush drawAtPoint: touch_location blendmode: kCGBlendModeDestinationOut alpha: 1];

Es funktioniert ok, aber Frequenz von touchesMoved nicht genug, wenn der Benutzer zu schnell Finger bewegt sich dann bekomme ich eine Menge von kurzen Linien (oder sogar Punkten) anstelle von einer langen Reihe.

fand ich Informationen von UIBezierPath und example aber Autor gerade zieht Linien durch Pfad:

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextAddPath(context, path); 

CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetLineWidth(context, self.lineWidth); 
CGContextSetStrokeColorWithColor(context, self.lineColor.CGColor); 

CGContextStrokePath(context); 

Wie ich meine png Bürste mit UIBezierPath ziehen kann?

Ich brauche so etwas wie dieser

enter image description here

Vielen Dank!

+0

Wie wäre es mit einem gleitenden Durchschnitt der Touch-Position? Dies führt zu einer gewissen Verzögerung (was wünschenswert sein kann oder auch nicht), aber zu "Sprüngen". Je länger die MA-Periode, desto glatter, aber umso länger. – verec

+0

Ok, ich verstehe, aber natürlich ist Lag nicht gut. Trotzdem danke für deine Idee. Vielleicht werde ich versuchen, etwas damit zu tun. –

Antwort

1

Es gibt ein Open-Source-Projekt, das für Sie nützlich sein wird. iOS-Scratch-n-See. Klasse ImageMaskView wird interessant sein zu studieren.

Hoffe, dass hilft!

+0

Ja! Amar, genau das möchte ich. Danke vielmals! –