2013-07-16 49 views
0

我想填充形狀的內部,但沒有用處。它只是描繪路徑,但不填充你好顏色。我GOOGLE了,但沒有作爲填充不工作。指導我做錯了什麼。填充內部的路徑保持線寬可見

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextAddPath(ctx, pathi); 
CGContextSetStrokeColorWithColor(ctx, [UIColor redColor].CGColor); 
CGContextSetFillColorWithColor(ctx, [UIColor yellowColor].CGColor); 
CGContextSetLineWidth(ctx, 3.0); 
CGContextSetLineCap(ctx, kCGLineCapSquare); 
CGContextSetAllowsAntialiasing(ctx, NO); 
// CGContextStrokePath(ctx); 
CGContextDrawPath(ctx, kCGPathFillStroke); 

編輯:爲伯提的代碼是

- (CGMutablePathRef)getPath { 

if (self.shapeType == NOSHAPE) { 
    return nil; 
} 

[lineHeight removeAllObjects]; 
[linesArray removeAllObjects]; 

CGMutablePathRef path = CGPathCreateMutable(); 

switch (self.shapeType) { 
    case Rectangle_SHAPE:{ 
     Line *l1 = [[Line alloc] initWithLineName:LineName_a_S 
             starttPoint:self.bound.origin 
             endPoint:CGPointMake(self.bound.size.width, self.bound.origin.y) scalingFactor:1.0 
            linePosition:LINE_DIRECTION_HORIZONTAL]; 

     [lineHeight addObject:[NSNumber numberWithFloat:l1.lineLength]]; 
     [linesArray addObject:l1]; 

     Line *l2 = [[Line alloc] initWithLineName:LineName_c_S 
             starttPoint:CGPointMake(self.bound.size.width, self.bound.origin.y) 
             endPoint:CGPointMake(self.bound.size.width, self.bound.size.height) scalingFactor:1.0 
            linePosition:LINE_DIRECTION_VERTICAL]; 

     [lineHeight addObject:[NSNumber numberWithFloat:l2.lineLength]]; 
     [linesArray addObject:l2]; 

     Line *l3 = [[Line alloc] initWithLineName:LineName_b_S 
             starttPoint:CGPointMake(self.bound.size.width, self.bound.size.height) 
             endPoint:CGPointMake(self.bound.origin.x, self.bound.size.height) scalingFactor:1.0 
            linePosition:LINE_DIRECTION_HORIZONTAL]; 

     [lineHeight addObject:[NSNumber numberWithFloat:l3.lineLength]]; 
     [linesArray addObject:l3]; 

     Line *l4 = [[Line alloc] initWithLineName:LineName_d_S 
             starttPoint:CGPointMake(self.bound.origin.x, self.bound.size.height) 
             endPoint:self.bound.origin scalingFactor:1.0 
            linePosition:LINE_DIRECTION_VERTICAL]; 

     [lineHeight addObject:[NSNumber numberWithFloat:l4.lineLength]]; 
     [linesArray addObject:l4]; 

     CGPathAddPath(path, NULL, [l1 getPath]); 
     CGPathAddPath(path, NULL, [l2 getPath]); 
     CGPathAddPath(path, NULL, [l3 getPath]); 
     CGPathAddPath(path, NULL, [l4 getPath]); 

     [l1 release]; 
     [l2 release]; 
     [l3 release]; 
     [l4 release]; 
     break; 
    } 
    default: 
     break; 
} 

return path; 

}

我也創造其他形狀和路徑在相同的方式進行。 類給我從開始和結束點的線。請告訴我,如果有什麼我失蹤。

+0

你在看什麼?只有紅色的輪廓? (你實際看到的圖像+預計可能會有用) –

+0

只是紅色的輪廓。 – fibnochi

+0

我試過了,我能夠得到邊框並使用相同的代碼分隔填充顏色。我用這個爲你的「pathi」 CGPathRef pathi = CGPathCreateWithEllipseInRect(CGRectMake(0,0,100,100),nil); 現在我的猜測是要麼你的路徑不是一個大的矩形,或者你正在使用較大的值的寬度大小,這是隱藏你的填充顏色。 –

回答

0

我也reccomend哪些用戶在朴子他的評論暗示:

存儲的路徑,第一填充(CGContextFillPath),改變筆觸顏色,然後行程(CGContextStrokePath)它。
我已經這樣做了,這工作正常。