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;
}
我也創造其他形狀和路徑在相同的方式進行。 行類給我從開始和結束點的線。請告訴我,如果有什麼我失蹤。
你在看什麼?只有紅色的輪廓? (你實際看到的圖像+預計可能會有用) –
只是紅色的輪廓。 – fibnochi
我試過了,我能夠得到邊框並使用相同的代碼分隔填充顏色。我用這個爲你的「pathi」 CGPathRef pathi = CGPathCreateWithEllipseInRect(CGRectMake(0,0,100,100),nil); 現在我的猜測是要麼你的路徑不是一個大的矩形,或者你正在使用較大的值的寬度大小,這是隱藏你的填充顏色。 –