0

基本上,我正在制作一个有两个图像的视图。图像 1 显示在占据视图左上角的直角三角形中,图像 2 占据了占据右下角的直角三角形。

想象一个对角线切割的正方形,在每个生成的一半中都存在不同的图像。

我一直在阅读很多有关遮罩的信息,但我不想使用其他图像来遮盖这些图像。

我正在寻找一种方法给它 3 个点,形成那个三角形,然后让它以这种方式剪辑图像。

我觉得这在 Coregraphics 中可能很容易做到,我只是错过了我认为的电话。

任何帮助是极大的赞赏!

4

1 回答 1

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();
于 2012-12-25T22:18:15.627 回答