2013-07-16 53 views
6

我有兩個UIImageView,第一個在第二個之上。我想用畫筆擦除第一張圖片(畫筆是帶有軟邊緣的png圖片),以使第二張圖片可見。如何用png-brush和UIBezierPath擦除UIImageView的片段

我這樣做,通過這種方式:

1)touchesMoved[自setNeedsDisplayInRect:[自brushRectForPoint:touch_location]];在(無效)的drawRect

2):(的CGRect)RECT我請[_brush drawAtPoint:touch_location的BlendMode:kCGBlendModeDestinationOut阿爾法:1];

它工作正常,但頻率touchesMoved不夠,如果用戶移動手指太快然後我得到了很多的短線(或平衡點),而不是一個長行。

我發現UIBezierPath和example的信息,但筆者只是路徑繪製線條:

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextAddPath(context, path); 

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

CGContextStrokePath(context); 

怎樣繪製我的PNG刷UIBezierPath?

我需要的是這樣的

enter image description here

非常感謝!

+0

觸摸位置的移動平均值如何?這會引入一些滯後(可能或不可取),但會消除「跳躍」。 MA時期越長,越平滑,但也越滯後。 – verec

+0

好的,我明白了,但是當然滯後並不好。無論如何感謝您的想法。可能是我會盡力做到這一點。 –

回答

1

有一個開源項目,對您有用。iOS-Scratch-n-See。課ImageMaskView將是有趣的研究。

希望有幫助!

+0

是的!阿馬爾,這正是我想要的。非常感謝! –