2013-07-11 3 views
3

Я хочу заполнить цвет внутри графика, используя 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

Как я могу заполнить цвет между графиком и х, у оси?

+0

И в чем ваш вопрос? –

+0

отредактировал question.please прочитал –

+0

+1 хороший вопрос – Warewolf

ответ

2

Похоже, что вы не закрываете свой путь правильно, следовательно, прямая линия между первой и последней точками. Вы должны использовать addLineToPoint за последние три пункта не только moveToPoint, а затем я думаю, что вы будете там.

+0

Я не могу использовать addlinetopoint, так как я не хочу добавлять туда строку ... я надеюсь, что у меня это получится –

+1

addLineToPoint просто перемещает невидимый курсор, но ничего не добавляет к вашему пути, поэтому ничего не сделает. Если вы хотите просто заполнить все под графиком, вам нужно будет использовать addLineToPoint от последней точки по вертикали к оси, горизонтально вдоль оси x, а затем вертикально до первой точки, что есть у вас с moveToPoint. Если вы просто хотите, чтобы верхняя часть графика отображалась черным цветом, погладьте свой путь, не добавляя эти точки или не закрывая сначала путь. Затем добавьте 3 строки и заполните их. –

+0

Спасибо, человек ...! –

2

Насколько я понимаю, вы хотите погладить этот путь, но заполните другую область (область между вашим путем и осью).

Для этого вам нужно использовать два пути. Тот, который вы сейчас рисуете для удара, а другой - для заполнения. Создавайте оба пути одновременно, но запустите путь заполнения от начала координат системы и добавьте строку в начало графика. Продолжайте добавлять строки к обоим путям, а в конце добавьте строку вниз к оси x для пути заполнения, закройте путь заполнения, и все будет готово.

+0

Да, я сделал это, и теперь он работает. Спасибо человеку! –

Смежные вопросы