给定:
- 带有框架
{0,0,100,100}
的 CGContextRef (ctx
) - 和一个矩形 (
r
),框架为{25,25,50,50}
将上下文剪切到该矩形很容易:
CGContextClipToRect(ctx, r);
遮盖下面的红色区域(红色== mask ):
但我想反转这个剪裁矩形以将其转换为剪裁 mask 。期望的结果是屏蔽下面的红色部分(red == mask):
我想在运行时以编程方式执行此操作。
我不想手动准备位图图像以随我的应用静态发布。
给定 ctx
和 r
,如何在运行时最轻松/直接地完成此操作?
最佳答案
阅读 “Filling a Path” section of the Quartz 2D Programming Guide 中的填充规则.
对于您的情况,最简单的做法是使用奇偶填充规则。创建一个由您的小矩形和一个更大的矩形组成的路径:
CGContextBeginPath(ctx);
CGContextAddRect(ctx, CGRectMake(25,25,50,50));
CGContextAddRect(ctx, CGRectInfinite);
然后,使用奇偶填充规则将此路径与剪切路径相交:
CGContextEOClip(ctx);
关于ios - quartz 2D : How to convert a clipping rect to an inverted mask at runtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145641/