0
私は光源の周りの球の色を変更する能力を探しています。今は、ColorからCGImageを作成し、PNGでマスクしています。これはうまくいきますが、色を変えるたびに、私は本当に遅いImage全体を再描画する必要があります。色あい再描画せずにUIImage
画像を再描画せずに色あせてしまう可能性はありますか?あなたの助けを
おかげ
これは、球を作成するには、私の現在の方法である:まあ
+ (UIImage *)imageWithColor:(UIColor *)color andImage:(UIImage *)image
{
// create Image from Color
CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,[color CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
// mask color
CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(image.CGImage),
CGImageGetHeight(image.CGImage),
CGImageGetBitsPerComponent(image.CGImage),
CGImageGetBitsPerPixel(image.CGImage),
CGImageGetBytesPerRow(image.CGImage),
CGImageGetDataProvider(image.CGImage), NULL, false);
CGImageRef masked = CGImageCreateWithMask([img CGImage], actualMask);
CGImageRelease(actualMask);
UIImage * retImage = [UIImage imageWithCGImage:masked];
CGImageRelease(masked);
return retImage;
}
誰もがHOWTO対策を知っていれば、関数呼び出しが遅い、私は回答をお願い申し上げことです。私はInstrumentでフレームレートを測定していましたが、色を変えても毎秒約3フレームの速度が得られましたが、これは私が期待するものではありません);