2012-05-11 79 views
2

我有下面的代碼應該畫一個撫摸和填充的矩形,但填充不會顯示出來。ObjectiveC中的CGContextFillPath如何工作?

[[UIColor greenColor] setStroke]; 
    [[UIColor brownColor] setFill]; 

    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, right, bottom); 
    CGContextAddLineToPoint(context, right,top); 
    CGContextAddLineToPoint(context,left, top); 
    CGContextAddLineToPoint(context, left, bottom); 
    CGContextAddLineToPoint(context, right, bottom); 

    CGContextStrokePath(context); 
    CGContextFillPath(context); 

中風工程,我得到一個很好的綠色矩形沒有填充(或白色填充)。這是針對iOS的UIView。看起來很簡單,這讓我瘋狂!

回答

6

做到這一點,正確的方法之前,設置繪圖模式,以包括填充和路徑。

CGPathDrawingMode mode = kCGPathFillStroke; 
CGContextClosePath(context); //ensure path is closed, not necessary if you know it is 
CGContextDrawPath(context, mode); 

您可以使用CGContextFillPath()簡單地做了填充,但它基本上只是CGContextDrawPath()自動調用CGContextClosePath()並使用kCGPathFillCGPathDrawingMode。你可能總是使用CGContextDrawPath()並放入你自己的參數來獲得你想要的填充/描邊的類型。您還可以使用偶數奇數繪圖模式之一將孔放在凸出的路徑中。

3

從文檔上CGContextStrokePath

石英使用線路寬度和圖形狀態的行程顏色 畫的路徑。作爲調用此函數的副作用,Quartz 會清除當前路徑。

0

也許你應該叫CGContextClosePath你叫CGContextFillPath

+0

不,CGContextFillPath自動執行此操作。 – Eli