我有以下代碼:爲什麼連線在自身翻倍時不會變圓?
- (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