0

是否可以在同一图像的区域上添加 alpha 属性?例如

没有阿尔法的正方形

带 alpha 的正方形

4

1 回答 1

1

最简单的解决方案是将图像分开并将 alpha 保存为 png 的一部分,然后将图像视图组织为彼此齐平。

否则,我在常规视图中编写此快速代码,对图像执行相同操作(我对 Core Graphics 比较陌生,所以我确信有更好的方法来做到这一点 - 另外,我的示例图像是并排的):

-(void) drawRect {

    // GET THE CONTEXT, THEN FLIP THE COORDS (my view is 189 ponts tall)

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGAffineTransform flip = CGAffineTransformMake(1, 0, 0, -1, 0, 189);
    CGContextConcatCTM(context, flip);

    // GET THE IMAGE REF

    UIImage *targetImage = [UIImage imageNamed:@"test.jpg"];
    CGImageRef imageRef = targetImage.CGImage;

    // SET THE COORDS

    CGRect imageCoords = CGRectMake(0, 0, 116, 189);
    CGRect imageCoordsTwo = CGRectMake(116, 0, 117, 189);

    // CUT UP THE IMAGE INTO TWO IMAGES

    CGImageRef firstImage = CGImageCreateWithImageInRect(imageRef, imageCoords);
    CGImageRef secondImage = CGImageCreateWithImageInRect(imageRef, imageCoordsTwo);

    // DRAW FIRST IMAGE, SAVE THE STATE, THEN SET THE TRANSPARENCY AMOUNT

    CGContextDrawImage(context, imageCoords, firstImage);
    CGContextSaveGState(context);
    CGContextSetAlpha(context, .4f);

    // DRAW SECOND IMAGE, RESTORE THE STATE

    CGContextDrawImage(context, imageCoordsTwo, secondImage);
    CGContextRestoreGState(context);

    // TIDY UP

    CGImageRelease(firstImage);
    CGImageRelease(secondImage);

}
于 2012-10-31T05:15:54.803 回答