2012-02-14 11 views
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フレームの速度が得られましたが、これは私が期待するものではありません);

答えて

0

Time ProfilerオプションでInstrumentsを実行する必要があります。

関連する問題