0

uiimageviewの透過部分を検出したいです。このコードを使用して uiimageview に描画しています。しかし、私は uiimage の透過部分を検出し、その部分に色が塗りつぶされないようにしたいと考えています。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
 //   CGFloat red,green,blue,alpha;

    UITouch *touch1 = [touches anyObject];
    CGPoint currentPoint = [touch1 locationInView:Image_apple];

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

    CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeNormal);

    //   CGContextSetBlendMode(UIGraphicsGetCurrentContext(),[self getBlendMode]);

    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x , lastPoint.y  );
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x , currentPoint.y  );
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(),8.0 );

    // [[self getPaintColor] getRed:&red green:&green blue:&blue alpha:&alpha];
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1, 0.5, 0.2, 1);

    CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeNormal);

    CGContextStrokePath(UIGraphicsGetCurrentContext());
    Image_apple.image = UIGraphicsGetImageFromCurrentImageContext();
    [Image_apple setAlpha:1];
    UIGraphicsEndImageContext();
}

前もって感謝します

4

1 に答える 1

1

あなたを助けるかもしれないブレンドモードがあります: kCGBlendModeDestinationOver. コンテキストの不透明な部分のみを描画します。

他のブレンド モードを使用する必要がある場合は、画像をマスクに変換し、コンテキストをそれにクリップすることができます。

于 2013-09-03T06:39:45.527 に答える