6

最初に2番目の上に、2つのUIImageViewがあります。最初の画像の一部をブラシで消去して(ブラシはソフトエッジのpng画像です)、2番目の画像の一部を表示したいと思います。

私はこの方法でそれをしました:

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

2) (void)drawRect:(CGRect)rectで[_brush drawAtPoint:touch_location blendMode:kCGBlendModeDestinationOut alpha:1];を呼び出します。

問題なく動作しますが、 touchesMovedの頻度が十分ではありません。ユーザーが指を速く動かすと、1 本の長い線ではなく、短い線 (またはポイント) がたくさん表示されます。

UIBezierPath との情報を見つけましたが、作成者はパスで線を引くだけです:

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextAddPath(context, path);

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

CGContextStrokePath(context);

UIBezierPath で png ブラシを描画するにはどうすればよいですか?

私はこのようなものが必要です

ここに画像の説明を入力

どうもありがとう!

4

1 に答える 1

2

あなたに役立つオープンソースプロジェクトがあります.. iOS-Scratch-n-See。クラスImageMaskViewは勉強するのが面白いでしょう。

それが役立つことを願っています!

于 2013-07-16T13:00:29.497 に答える