Tôi cần một UIImageView có thể vẽ bản thân trong màu hoặc b/w theo một lá cờ:Làm thế nào để vẽ một hình trên một UIImage đồng thời tôn trọng alpha của hình ảnh mặt nạ
BOOL isGrey;
Tôi đang cố gắng để làm điều đó bằng cách vẽ một hình chữ nhật màu đen trên đầu trang của hình ảnh ban đầu với Quartz blendmode thiết lập để màu. Điều này làm việc ngoại trừ nó không tôn trọng mặt nạ alpha của hình ảnh.
Xem hình minh họa: alt text http://img214.imageshack.us/img214/1407/converttogreyscaleillo.png
tìm kiếm Google và SO, tôi thấy và thử nhiều giải pháp nhưng không ai tôn trọng các mặt nạ một trong hai.
Dưới đây là đoạn code mà tạo ra 'Những gì tôi có được' hình trên:
- (void)drawRect:(CGRect)rect {
if (isGrey) {
CGContextRef context = UIGraphicsGetCurrentContext();
// flip orientation
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// draw the image
CGContextDrawImage(context, self.bounds, self.image.CGImage);
// set the blend mode and draw rectangle on top of image
CGContextSetBlendMode(context, kCGBlendModeSaturation);
CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, rect);
} else {
[self.image drawInRect:rect];
}
}
Có một số bản vẽ chế độ thạch anh mà tôi quên để thiết lập? Tôi đã xem qua hướng dẫn lập trình thạch anh nhưng rất khó để trích xuất một chút thông tin bạn cần từ các đối tượng chồng chéo và siêu liên kết.
Rõ ràng là tôi đang tìm một giải pháp chung sẽ áp dụng cho hình ảnh với bất kỳ hình dạng mặt nạ nào, không chỉ vòng tròn được hiển thị.
Ngoại trừ việc điều này không hoạt động nếu chế độ xem của bạn backgroundColor là UIColor clearColor. –