Tengo el siguiente código:¿Por qué la unión no se redondea cuando la línea dobla nuevamente sobre sí misma?
- (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);
}
Esto genera el siguiente resultado:
¿Hay una buena razón por la que el borde inferior de la forma roja no se completa? ¿O es un error en Core Graphics cuando la línea se duplica exactamente en sí misma?
Por supuesto, los * extremos * de la línea son redondeados, eso es 'CGContextSetLineCap' y no es la pregunta aquí. La pregunta es por qué 'CGContextSetLineJoin' con' kCGLineJoinRound' no redondea la unión cuando la ruta gira 180 ° (pero lo hace cuando se convierte en algo así como 179.427 °). – Anomie
Disculpa, acabo de ver el límite de la línea y pasé por alto la unión de la línea. Probablemente hayas encontrado un error. La documentación de kCGLineJoinRound establece claramente que las uniones deben redondearse, pero obviamente no lo son. –
Actualizado mi respuesta. –