Заливка фигуры градиентом в CGContext

Я хочу заполнить форму многоугольника, которую я нарисовал с помощью Core Graphics, линейным CGGradient. Функция CGContextDrawLinearGradient рисует градиент от одной точки к другой, но заполняет все представление. Как я могу отображать градиент только внутри нарисованного мной многоугольника?


person titaniumdecoy    schedule 22.06.2009    source источник


Ответы (1)


Вы можете создать CGMutablePath в желаемой форме, а затем использовать его для обрезки области, которую вы хотите отобразить, например...

// Construct yourClipPath

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

// Draw Your Gradient
person tmh    schedule 22.06.2009
comment
Спасибо, это работает! Я понял, что мне нужно вызвать CGContextSaveGState/CGContextRestoreGState, чтобы отрезать область. - person titaniumdecoy; 22.06.2009