2009-06-22 31 views
7

Chcę wypełnić wielokąt, który narysowałem za pomocą grafiki głównej z liniowym CGGradient. Funkcja CGContextDrawLinearGradient rysuje gradient z jednego punktu do drugiego, ale wypełnia cały widok. Jak wyświetlić gradient tylko wewnątrz narysowanego przeze mnie kształtu wielokąta?Wypełnianie kształtu gradientem w CGContext

Odpowiedz

16

Można skonstruować CGMutablePath w pożądany kształt, a następnie użyć go do klipu do regionu, który chcesz wyświetlić, coś jak ...

// Construct yourClipPath 

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

// Draw Your Gradient 
+2

Dzięki, że działa! Stwierdziłem, że musiałem wywołać CGContextSaveGState/CGContextRestoreGState, aby odpiąć region. – titaniumdecoy