2013-07-16 11 views
6

私は2つ目のUIImageViewを持っています。私は、ブラシで最初の画像の部分を消去したい(ブラシは柔らかいエッジのあるPNG画像です)、2番目の画像を見えるようにします。png-brushとUIBezierPathを使ってUIImageViewを消去する方法

私は、この方法によって:touchesMoved

1)自己setNeedsDisplayInRectを:[自己brushRectForPoint:touch_location]。 (CGRect)Iは呼び出し RECT:

2)(ボイド)のdrawRectで[_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); 

私はUIBezierPathと私のPNGブラシを描くことができますどのように?

私はこの

enter image description here

おかげでたくさんのようなものが必要!

+0

タッチ位置の移動平均はどうですか?これはいくつかの遅れ(望ましくないかもしれない)を導入するが、滑らかな "飛び降り"をもたらすだろう。 MA期間が長いほど、よりスムーズですが、遅れも長くなります。 – verec

+0

私は理解しますが、遅れは良くありません。とにかくあなたの考えに感謝します。私はこれで何かをしようとするかもしれないかもしれません。 –

答えて

1

あなたに役立つオープンソースプロジェクトがあります。iOS-Scratch-n-See。クラスImageMaskViewは興味深いものです。

希望に役立ちます!

+0

はい!アマール、まさに私が欲しいものです。どうもありがとう! –