2012-10-22 47 views
0

在一个类中,我有一个包含五个UIImage(例如tiangle.png和circle.png)的数组。用掩码更改UIImage的颜色并用彩色图像替换该图像

在当前的课程中,我有一个颜色列表。点击UIImage后,点击一种颜色后,可以更改当前UIImage的颜色。 这将通过掩盖图像,设置其颜色并用所选颜色中的新UIImage替换旧UIImage来实现。

但有一些错误的方法,它应该改变颜色:

- (void) changeColor: (UITapGestureRecognizer*) gestureRecognizer{ 

    UIGraphicsBeginImageContext(test.newView.image.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGPoint loc = [gestureRecognizer locationInView:self.view]; 
    CGContextSetFillColorWithColor(context, [[self colorOfPoint:loc]CGColor]); 
    CGContextTranslateCTM(context, 0, test.newView.image.size.height); 
    CGContextScaleCTM(context, 1.0, -1.0); 
    CGRect rect = CGRectMake(test.newView.frame.origin.x,test.newView.frame.origin.x, test.newView.image.size.width,test.newView.image.size.height); 
    CGContextSetBlendMode(context, kCGBlendModeColorBurn); 

    CGContextClipToMask(context, rect, test.newView.image.CGImage); 
    CGContextAddRect(context, rect); 
    CGContextDrawPath(context, kCGPathFill); 

    CGImageRef imgRef = CGBitmapContextCreateImage(context); 
    UIImage* img = [UIImage imageWithCGImage:imgRef]; 
    CGImageRelease(imgRef); 
    CGContextRelease(context); 
    UIGraphicsEndImageContext(); 
    test.newView.image = img; 

} 

正在发生的事情的唯一的事情就是点击UIImage的是会得到不透明。
持有UIImage的imageview在这种情况下不会被删除。

回答

1

我不确定在UIGraphics图像上下文中使用CGBitmapContextCreateImage()调用来获取imageRef是否合适。我见过的每个示例都使用了

UIImage* image = UIGraphicsGetImageFromCurrentImageContext(); 

在关闭图像上下文之前抓取图像。你可以试试。

+0

是的,谢谢,这是正确的,然后将其值传递给UIImageView的实际图像:newView.image = image; – Studie