如何使用uiimageview rect屏蔽图像?

时间:2012-10-24 08:17:52

标签: ios6

我想用这段代码掩盖图像:

CGFloat plx = inputImage.size.width/_imageView.frame.size.width;
CGFloat ply = inputImage.size.height/_imageView.frame.size.height;

CGFloat radius = MIN(_postionView.frame.size.width * plx, _postionView.frame.size.height * ply)/1.5;

CIVector *cen = [CIVector vectorWithX:_postionView.center.x * plx Y:_postionView.center.y * ply];

CIFilter *radialGradient = [CIFilter filterWithName:@"CIRadialGradient" keysAndValues:
                            @"inputRadius0", [NSNumber numberWithFloat:radius],
                            @"inputRadius1", [NSNumber numberWithFloat:radius + 1.0f],
                            @"inputColor0", [CIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:1.0],
                            @"inputColor1", [CIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0],
                            @"inputCenter", cen,
                            nil];

CIImage *circleImage = [radialGradient valueForKey:kCIOutputImageKey];

_postionView是我的uiimageview。它没有得到正确的位置。我猜这是因为uikit坐标系和石英不同的坐标系。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

已经解决,以下是解决代码:

CGPoint touchPoint = [touch locationInView:self.view];
ScaleX = _imageView.image.size.width/self.view.frame.size.width;
ScaleY = _imageView.image.size.height/self.view.frame.size.height;

CGFloat imgX;
CGFloat imgY;

imgX = touchPoint.x * ScaleX;
imgY = _imageView.image.size.height - touchPoint.y * ScaleY;

VICPoint = CGPointMake(imgX, imgY);

CIImage *maskImage = nil;
CIVector *cen;

cen = [CIVector vectorWithX:VICPoint.x Y:VICPoint.y];
CGFloat radius = MIN(80 * ScaleX, 80 * ScaleY)/1.5;

CIFilter *radialGradient = [CIFilter filterWithName:@"CIRadialGradient" keysAndValues:
                            @"inputRadius0", [NSNumber numberWithFloat:radius],
                            @"inputRadius1", [NSNumber numberWithFloat:radius + 1.0f],
                            @"inputColor0", [CIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:1.0],
                            @"inputColor1", [CIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0],
                            @"inputCenter", cen,
                            nil];

CIImage *circleImage = [radialGradient valueForKey:kCIOutputImageKey];