在CGContext中使用渐变填充形状

tit*_*coy 7 cocoa objective-c cgcontext

我想用线性CGGradient填充我通过Core Graphics绘制的多边形形状.CGContextDrawLinearGradient函数从一个点到另一个点绘制渐变,但它填充整个视图.如何仅在我绘制的多边形内部显示渐变?

tmh*_*tmh 18

你可以用你想要的形状构造一个CGMutablePath然后用它来剪辑到你想要显示的区域,比如......

// Construct yourClipPath

CGContextAddPath(yourContext, yourClipPath);
CGContextClosePath(yourContext);
CGContextClip(yourContext);

// Draw Your Gradient
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这有效!我发现我必须调用CGContextSaveGState/CGContextRestoreGState才能解开该区域. (2认同)