我想使用UIBezierPath在图表中填充颜色。直到现在我使用了以下代码:
NSMutableArray *graphData=[[NSMutableArray alloc] initWithObjects:[NSArray arrayWithObjects:@"2013-06-26",@"46", nil],[NSArray arrayWithObjects:@"2013-06-27",@"37", nil],[NSArray arrayWithObjects:@"2013-06-28",@"96", nil],[NSArray arrayWithObjects:@"2013-06-29",@"29", nil],[NSArray arrayWithObjects:@"2013-06-30",@"29", nil],[NSArray arrayWithObjects:@"2013-07-01",@"24", nil], nil];
UIBezierPath *aPath = [UIBezierPath bezierPath];
[[UIColor blackColor] setStroke];
[[UIColor redColor] setFill];
[aPath moveToPoint:CGPointMake(10, kGraphBottom-[[[graphData objectAtIndex:0] objectAtIndex:1]floatValue])];
for (int i = 1; i < graphData.count; i++)
{
[aPath addLineToPoint:CGPointMake(10+50* (i), kGraphBottom-[[[graphData objectAtIndex:i] objectAtIndex:1]floatValue])];
}
[aPath moveToPoint:CGPointMake(10+50*graphData.count , kGraphBottom)];
[aPath moveToPoint:CGPointMake(10 , kGraphBottom)];
[aPath moveToPoint:CGPointMake(10 , kGraphBottom-[[[graphData objectAtIndex:0] objectAtIndex:1]floatValue])];
[aPath closePath];
[aPath fill];
[aPath stroke];
我得到的输出如下图所示:
如何填充图形与x,y轴之间的颜色?
答案 0 :(得分:2)
看起来你没有正确地关闭你的路径,因此在第一点和最后一点之间的直线。您应该使用addLineToPoint
来获取最后三个点,而不仅仅是moveToPoint
,然后我认为您会在那里。
答案 1 :(得分:2)
据我了解,您想要划过该路径,但要填充不同的区域(路径和轴之间的区域)。
你必须使用两条路径。你正在为中风绘制的那个和另一个用于填充的那个。同时构建两个路径,但从坐标系的原点开始填充路径,并在图形的开头添加一条线。继续向两条路径添加线条,最后在填充路径的x轴上添加一条线,关闭填充路径,然后就完成了。