0
我正在開發一個在圖層上繪製的應用程序。這是一個示例代碼,顯示了我繪製的方式。石英芯:改變整個圖層的像素顏色
UIImageView * currentLayer = // getting the right layer...
UIGraphicsBeginImageContext(currentLayer.frame.size);
[currentLayer.image drawInRect:currentLayer.bounds];
// Painting...
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
currentLayer.image = img;
UIGraphicsEndImageContext();
所以我有一個圖像(1024×768),它有兩種像素:
- 繪者(同色每個)
- 透明的人
什麼是改變的最佳途徑整個圖層的顏色不透明像素,知道所有像素都具有相同的顏色?
我是否必須逐一重繪每個不透明的像素?
編輯:
大衛Rönnqvist建議,通過與我的層來掩蔽填充圖像tryed。
,我想改變顏色層是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像素被繪製...
任何想法?
你想改變每個像素或僅僅是不透明的像素? –
只是不透明的! – Martin
您可以將具有圖形的圖層作爲蒙版用於完全用新顏色填充的新圖層。 alpha值將被用於讓r,g,b值進入新層。你需要檢查性能思想。我不確定當你有很多被掩蓋的圖層時它會如何縮放。此外,用於遮罩的圖層不再是視圖層次結構的一部分。 –