在UIBezierPath中填充颜色

时间:2013-07-11 05:40:48

标签: iphone uibezierpath

我想使用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];

我得到的输出如下图所示:Graph

如何填充图形与x,y轴之间的颜色?

2 个答案:

答案 0 :(得分:2)

看起来你没有正确地关闭你的路径,因此在第一点和最后一点之间的直线。您应该使用addLineToPoint来获取最后三个点,而不仅仅是moveToPoint,然后我认为您会在那里。

答案 1 :(得分:2)

据我了解,您想要划过该路径,但要填充不同的区域(路径和轴之间的区域)。

你必须使用两条路径。你正在为中风绘制的那个和另一个用于填充的那个。同时构建两个路径,但从坐标系的原点开始填充路径,并在图形的开头添加一条线。继续向两条路径添加线条,最后在填充路径的x轴上添加一条线,关闭填充路径,然后就完成了。