0

光源の周りの球の色を変更する機能を探しています。現在、Color から CGImage を作成し、PNG でマスクすることでそれを行っています。これは機能しますが、色を変更するたびに、画像全体を再描画する必要があり、非常に遅いです。

再描画せずに画像に色を付ける可能性はありますか?

ご協力いただきありがとうございます

これは、球体を作成する現在の方法です。

+ (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;
}

どの関数呼び出しが遅いかを測定する方法を誰かが知っていれば、回答をいただければ幸いです。インストルメントでフレームレートを測定するアプリを実行しましたが、色を変更している間、1秒あたり約3フレームが得られましたが、これは期待したものではありません.. ;)

4

1 に答える 1

0

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

于 2012-12-04T08:59:14.520 に答える