我正在绘制甜甜圈图。我CGPath
用来绘制并在绘制后将其添加到CAShapeLayer
. 首先我画一个外圆弧,然后向中心画线,现在我想将圆弧添加到我的当前点。
截图如下。
看到较小的弧线应该在行尾。
我的代码,
for (int j = 0; j < numSubject; j++) {
int valueForSubject = [datasource valueOfSubjectAtIndex:j andLevel:i inDonutChartView:self];
endAngle = [self angleInRadianFromSubjectValue:valueForSubject];
DLog(@"Angle - %f",RADIANS_TO_DEGREES(endAngle))
//path
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddArc(path, NULL, prevPoint.x, prevPoint.y, radius, startAngle, endAngle, NO);
CGPoint currentPoint = CGPathGetCurrentPoint(path);
//find angles from start point to center and end point to center
CGFloat angle1 = [self angleFromFirstPoint:prevPoint secondPoint:centerPoint];
CGFloat angle2 = [self angleFromFirstPoint:CGPathGetCurrentPoint(path) secondPoint:centerPoint];
double endX1 = cos(angle1) * LEVEL_WIDTH + prevPoint.x;
double endY1 = sin(angle1) * LEVEL_WIDTH + prevPoint.y;
double endX2 = cos(angle2) * LEVEL_WIDTH + CGPathGetCurrentPoint(path).x;
double endY2 = sin(angle2) * LEVEL_WIDTH + CGPathGetCurrentPoint(path).y;
//first connect current point to end2 point then draw arc and then connect to end1
CGPathAddLineToPoint(path, NULL, endX2, endY2);
//CGPathAddArcToPoint(path, NULL, CGPathGetCurrentPoint(path).x, CGPathGetCurrentPoint(path).y, endX2, endY2, radius - LEVEL_WIDTH);
CGPathAddArc(path, NULL, CGPathGetCurrentPoint(path).x , CGPathGetCurrentPoint(path).y, radius - LEVEL_WIDTH, endAngle, startAngle, YES);
//CGPathAddLineToPoint(path, NULL, endX1, endY1);
//CGPathCloseSubpath(path);
A3DonutChartShapeLayer* arcLayer = [[A3DonutChartShapeLayer alloc]init];
arcLayer.path = path;
//arcLayer.frame = CGPathGetBoundingBox(path);
arcLayer.lineWidth = BORDER_WIDTH;
arcLayer.strokeColor = [UIColor blackColor].CGColor;
arcLayer.fillColor = [UIColor clearColor].CGColor;
[self.layer addSublayer:arcLayer];
任何指针?