2012-05-02 3 views
2

なぜobj1はobj1とブレンドせずにCGLayerを使用しないのですが、CGContextDrawLayerAtPointと同じ問題です。CGLayerはCGContextSetBlendModeをサポートしていませんか?なぜCGレイヤーがブレンドされないのですか?

//Layer 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGLayerRef objectLayer = CGLayerCreateWithContext (context, rect.size, NULL); 
    CGContextRef objectContext = CGLayerGetContext (objectLayer); 
    //obj1 
    CGContextDrawImage(objectContext, CGRectMake(0, 0, rect.size.width, rect.size.height), [[UIImage imageNamed:@"background.png"] CGImage]); 
    //obj2 
    CGContextSetBlendMode(objectContext, kCGBlendModeSoftLight); 
    CGContextSetAlpha(objectContext, 0.5f); 
    CGContextDrawImage(objectContext, CGRectMake(0, 0, rect.size.width, rect.size.height), [[UIImage imageNamed:@"overlay1.png"] CGImage]); 
    CGContextDrawLayerInRect(context, rect, objectLayer); 

答えて

2

あなただけ内層のコンテキストをブレンドモードを設定しているので、イメージは、私はそれをレンダリングするのと同じ効果を持っていると思う柔らかな光のブレンドモードと透明な背景(の上にレンダリングされます通常のブレンドモード)。

ブレンドモードをcontextに設定すると、まだレンダリングされているレイヤーはそのモードでレンダリングされます。ブレンドモードはコンテキスト境界を越えません。

+0

ありがとう、私はこの問題を解決しました。 –

関連する問題