gpt4 book ai didi

objective-c - UIView drawRect() : fill everything except polygon

转载 作者:行者123 更新时间:2023-12-01 19:17:35 25 4
gpt4 key购买 nike

我需要在 drawRect() 方法中用“还原多边形”填充我的 UIView - View 中的所有内容都填充了一些颜色,除了多边形本身。

我有这个代码来绘制一个简单的多边形:

CGContextBeginPath(context);
for(int i = 0; i < corners.count; ++i)
{
CGPoint cur = [self cornerAt:i], next = [self cornerAt:(i + 1) % corners.count];
if(i == 0)
CGContextMoveToPoint(context, cur.x, cur.y);
CGContextAddLineToPoint(context, next.x, next.y);
}
CGContextClosePath(context);
CGContextFillPath(context);

我发现了一个类似的问题,但在 C# 中,而不是在 Obj-C 中: c# fill everything but GraphicsPath

最佳答案

可能最快的方法是设置剪辑:

// create your path as posted
// but don't fill it (remove the last line)

CGContextAddRect(context, self.bounds);
CGContextEOClip(context);

CGContextSetRGBFillColor(context, 1, 1, 0, 1);
CGContextFillRect(context, self.bounds);

其他两个答案都建议先填充一个矩形,然后在顶部绘制带有清晰颜色的形状。两者都省略了必要的混合模式。这是一个工作版本:
CGContextSetRGBFillColor(context, 1, 1, 0, 1);
CGContextFillRect(context, self.bounds);

CGContextSetBlendMode(context, kCGBlendModeClear);

// create and fill your path as posted

编辑:两种方法都需要 backgroundColor成为 clearColoropaque设置为 NO。

第二次编辑:最初的问题是关于核心图形的。当然,还有其他方法可以遮盖 View 的一部分。最值得注意的是 CALayermask属性(property)。

您可以将此属性设置为 CAPathLayer 的实例,该实例包含您的剪辑路径以创建模板效果。

关于objective-c - UIView drawRect() : fill everything except polygon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12177077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com