Lee*_*ong 4 iphone core-graphics
我有以下代码,似乎唯一的一行使用最后一种颜色.....我希望在整个过程中颜色都可以更改。有任何想法吗?
CGContextSetLineWidth(ctx, 1.0);
for(int idx = 0; idx < routeGrabInstance.points.count; idx++)
{
CLLocation* location = [routeGrabInstance.points objectAtIndex:idx];
CGPoint point = [mapView convertCoordinate:location.coordinate toPointToView:self.mapView];
if(idx == 0)
{
// move to the first point
UIColor *tempColor = [self colorForHex:[[routeGrabInstance.pointHeights objectAtIndex:idx] doubleValue]];
CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
CGContextMoveToPoint(ctx, point.x, point.y);
}
else
{
UIColor *tempColor = [self colorForHex:[[routeGrabInstance.pointHeights objectAtIndex:idx] doubleValue]];
CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
CGContextAddLineToPoint(ctx, point.x, point.y);
}
}
CGContextStrokePath(ctx);
Run Code Online (Sandbox Code Playgroud)
CGContextSetStrokeColorWithColor仅更改上下文的状态,不执行任何绘制。代码中唯一完成的绘图是最后的CGContextStrokePath。由于每次调用CGContextSetStrokeColorWithColor都会覆盖上一次调用设置的值,因此图形将使用最后的颜色集。
您需要创建一个新路径,设置颜色,然后在每个循环中绘制。像这样:
for(int idx = 0; idx < routeGrabInstance.points.count; idx++)
{
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, x1, y1);
CGContextAddLineToPoint(ctx, x2, y2);
CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
CGContextStrokePath(ctx);
}
Run Code Online (Sandbox Code Playgroud)