2011-06-07 12 views
0

CoreGraphicsのエキスパートではありません。本当にありがとうございます。パスからマスクを作成する

パスからマスクを作成しようとしています。 (画像の赤いパスを参照)。 Skitch.jpg

赤いパスの代わりに、パスを下のイメージのマスクにしたいと思います。

本当に手を使うことができました。あなたが作成したパスを持っていたら、パスをなでると同じ結果を得るために埋めることができCGContextReplacePathWithStrokedPathはパスに変換使用

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    mouseSwiped = YES; 

    UITouch *touch = [touches anyObject]; 
    CGPoint currentPoint = [touch locationInView:self.view]; 
    currentPoint.y -= 20; 


    UIGraphicsBeginImageContext(self.view.frame.size); 
    [drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 20.0); 
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0); 
    CGContextBeginPath(UIGraphicsGetCurrentContext()); 
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y); 
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y); 
    CGContextStrokePath(UIGraphicsGetCurrentContext()); 


    drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    lastPoint = currentPoint; 

    mouseMoved++; 

    if (mouseMoved == 10) { 
     mouseMoved = 0; 
    } 

} 

答えて

0

私が思いついた解決策をした

  • は、画面上のUIViewイメージを持っています。
  • イメージの繰り返しを保存し、その後、TouchesMovedまたはUIPanGestureRecognizerで、kCGContentBlendClearを設定した後savedImage、ストロークパスを描き、色
  • 保存UIImageViewでUIImageViewを埋めるために[UIColor clearColor]背景色で
  • 使用CoreGraphicsをUIImageViewの画像を作成します。
+0

もう少し説明していただけますか?私は全く同じ問題でここにこだわっている – Soumyajit

0

事前に感謝します。次に、CGContextClipを使用して、このパスにクリッピングマスクを設定することができます。

+0

しばらくの間、ここから離れました。私はあなたがおそらく正しい答えを持っていることを知っている、私は少し詳細が必要です。 – Jordan

関連する問題