2

为什么 obj2 不与 obj1 混合但不使用 CGLayer 它工作正常,与 CGContextDrawLayerAtPoint 相同的问题,CGLayer 不支持 CGContextSetBlendMode 吗?

    //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);
4

1 回答 1

2

您只是图层的上下文中设置混合模式,因此图像使用柔光混合模式渲染在透明背景之上(我认为这与使用普通混合模式渲染它的效果相同)。

的混合模式context仍设置为正常,因此图层(已渲染)将使用该模式进行渲染。混合模式不跨越上下文边界。

于 2012-05-02T13:35:30.377 回答