2012-05-02 2 views
2

obj2가 obj1과 섞이지 않고 CGLayer가 사용되지 않는 이유 CGContayerDrawLayerAtPoint와 동일한 문제가 발생합니다. 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

고마워,이 문제를 해결했습니다. –