首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对UIImage进行两次掩蔽会产生一个空图像

对UIImage进行两次掩蔽会产生一个空图像
EN

Stack Overflow用户
提问于 2012-12-16 23:13:52
回答 1查看 162关注 0票数 0

我正在使用CGImageMaskCreate创建一个蒙版图像,它在第一次被调用时运行良好。但是,当从drawRect第二次调用相同的函数时,创建的掩码图像是空的。

代码语言:javascript
复制
- (void)drawRect:(CGRect)rect{    
UIImage *maskImage = [UIImage imageNamed:@"circle.png"]; //This will be replaced    
UIImage *maskedImage = [self maskImage:_selectedImage withMask:maskImage];    
_selectedImage = maskedImage;    
[_selectedImage drawInRect:rect];                      
}

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {   
    CGImageRef maskRef = maskImage.CGImage;
    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
                                    CGImageGetHeight(maskRef),
                                    CGImageGetBitsPerComponent(maskRef),
                                    CGImageGetBitsPerPixel(maskRef),
                                    CGImageGetBytesPerRow(maskRef),
                                    CGImageGetDataProvider(maskRef), NULL, false);
    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
    UIImage *result = [UIImage imageWithCGImage:masked];
    NSLog(@"    MASK >> RETURNING %@ %f %f", 
           result.description, result.size.width, result.size.height);
return result;
}

在draw rect运行了三次之后,日志的输出是

代码语言:javascript
复制
MASK >> RETURNING UIImage: 0x903d720 320.000000 480.000000
MASK >> RETURNING UIImage: 0x73660c0 0.000000 0.000000
MASK >> RETURNING UIImage: 0x90f7390 0.000000 0.000000

因此,在第二次调用后,蒙版图像似乎是空的。

如果有帮助就太好了,这是我的第一个IOS应用程序,所以它可能是显而易见的。

EN

回答 1

Stack Overflow用户

发布于 2012-12-17 01:14:54

我认为这是你的程序逻辑:

一开始,_selectedImage是空的。因此,蒙版创建了一个圆。

现在你的_selectedImage已经包含了这个圆。所以第二次你的圆圈会被掩码归零。

-->预期行为。如果你没有预料到这一点,也许你想要阅读核心图形掩蔽函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13902630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档