我正在开发一个在图层上绘画的应用程序。这是一个示例代码,显示了我的绘画方式。
UIImageView * currentLayer = // getting the right layer...
UIGraphicsBeginImageContext(currentLayer.frame.size);
[currentLayer.image drawInRect:currentLayer.bounds];
// Painting...
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
currentLayer.image = img;
UIGraphicsEndImageContext();
所以我有一个图像(1024x768),它有两种像素:
- 绘制的(每个颜色相同)
- 透明的
知道所有像素具有相同颜色的情况下,更改整个图层不透明像素颜色的最佳方法是什么?
我必须一个一个地重绘每个不透明的像素吗?
编辑 :
正如 David Rönnqvist 所建议的那样,尝试用我的图层掩盖填充图像。
我想改变颜色的图层是self.image
:
// Creating image full of color
CGRect imRect = self.bounds;
UIGraphicsBeginImageContext(imRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, imRect);
UIImage * fill = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// masking the image
CGImageRef maskRef = [self.image CGImage];
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([fill CGImage], mask);
self.image = [UIImage imageWithCGImage:masked];
几乎 !它掩盖了我图层的确切对面:只绘制了 alpha 像素......
任何的想法 ?