基本上,我正在制作一个有两个图像的视图。图像1以直角三角形显示,占据视图的左上角,图像2显示右侧三角形,占据右下角。
想象一下,对角线方形切割,每个产生的一半都存在不同的图像。
我一直在阅读很多关于面具的内容,但我不想使用其他图像来掩盖这些图像。
我正在寻找一种方法来给它3个点,形成那个三角形,然后让它剪切图像。
我觉得在Coregraphics中这可能很容易做到,我只是错过了我认为的电话。
非常感谢任何帮助!
答案 0 :(得分:2)
这是一种方法,在图像上下文中使用剪切路径。示例是图像大小为256 x 256,但您应该能够轻松地根据您的需要进行调整。
UIGraphicsBeginImageContext(CGSizeMake(256, 256));
CGContextRef context = UIGraphicsGetCurrentContext();
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, 256);
CGContextConcatCTM(context, flipVertical);
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, 0, 256);
CGContextAddLineToPoint(context, 256, 256);
CGContextClosePath(context);
CGContextSaveGState(context);
CGContextClip(context);
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image1 CGImage]);
CGContextRestoreGState(context);
CGContextBeginPath(context);
CGContextMoveToPoint(context, 0, 0);
CGContextAddLineToPoint(context, 256, 0);
CGContextAddLineToPoint(context, 256, 256);
CGContextClosePath(context);
CGContextSaveGState(context);
CGContextClip(context);
CGContextDrawImage(context, CGRectMake(0, 0, 256, 256), [image2 CGImage]);
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); // image contains the result
UIGraphicsEndImageContext();