2013-07-16 18 views
6

Mam dwa UIImageView, pierwszy nad drugim. Chcę usunąć fragment pierwszego obrazu za pomocą pędzla (pędzel jest obrazem png z miękką krawędzią), aby element drugiego obrazu był widoczny.Jak usunąć fragment UIImageView za pomocą png-brush i UIBezierPath

I tak, że w ten sposób:

1) touchesMoved i [self setNeedsDisplayInRect [siebie brushRectForPoint: touch_location]];

2) w (void) drawRect: (CGRect) rect że wywołania [_brush drawAtPoint: touch_location blendMode: kCGBlendModeDestinationOut alpha: 1];

To działa ok, ale częstotliwość touchesMoved nie wystarczy, jeśli użytkownik przesuwa palec zbyt szybko potem dostać dużo krótkich linii (lub nawet punktów) zamiast jednej długiej linii.

znalazłem informację UIBezierPath i example ale autor po prostu rysuje linie o ścieżce:

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextAddPath(context, path); 

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

CGContextStrokePath(context); 

Jak mogę wyciągnąć mój png szczotkę z UIBezierPath?

muszę coś takiego

enter image description here

Dzięki wielkie!

+0

Co powiesz na średnią ruchomą miejsca dotyku? Wprowadzi to pewne opóźnienie (które może lub nie jest pożądane), ale wygładza "skoki". Im dłuższy okres MA, tym bardziej płynny, ale im więcej opóźnienia. – verec

+0

Ok, rozumiem, ale oczywiście opóźnienie nie jest dobre. W każdym razie dzięki za twój pomysł. Być może spróbuję coś z tym zrobić. –

Odpowiedz

1

Istnieje projekt open source, który będzie przydatny dla ciebie .. iOS-Scratch-n-See. Klasa ImageMaskView będzie interesująca do nauki.

Nadzieję, że pomaga!

+0

Tak! Amar, dokładnie tego chcę. Wielkie dzięki! –

Powiązane problemy