我有以下代码:为什么连线在自身翻倍时不会变圆?
- (void)drawRect:(CGRect)rect {
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor);
CGContextFillRect(c, rect);
CGContextSetLineJoin(c, kCGLineJoinRound);
CGContextSetLineCap(c, kCGLineCapRound);
CGContextSetLineWidth(c, 50.0);
CGContextSetStrokeColorWithColor(c, [UIColor redColor].CGColor);
CGContextBeginPath(c);
CGContextMoveToPoint(c, 60, 60);
CGContextAddLineToPoint(c, 60, 250);
CGContextAddLineToPoint(c, 60, 249);
CGContextStrokePath(c);
CGContextSetStrokeColorWithColor(c, [UIColor blueColor].CGColor);
CGContextBeginPath(c);
CGContextMoveToPoint(c, 160, 60);
CGContextAddLineToPoint(c, 160, 250);
CGContextAddLineToPoint(c, 160.01, 249);
CGContextStrokePath(c);
}
这将生成以下的输出:
是否有一个很好的理由,红色形状的底部边缘是不是圆的?或者它是否是Core Graphics中的一个错误?
当然这行的* ends *是四舍五入的,即'CGContextSetLineCap',这里不是问题。问题是为什么'CGContextSetLineJoin'和'kCGLineJoinRound'在路径变成180°时没有绕过连接(但当它变成类似179.427°的东西时)。 – Anomie 2011-06-23 14:31:17
对不起,我刚看到线帽,忽略了线条连接。你很可能找到了一个错误。 kCGLineJoinRound的文档清楚地表明连接应该四舍五入,但显然不是。 – 2011-06-23 20:07:15
更新了我的答案。 – 2011-06-24 05:48:48