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

이 어떻게 그래프와 X, Y 축 사이의 색을 채울 수 있습니까?

+0

그리고 귀하의 질문은 무엇입니까? –

+0

question.please 읽기 편집 –

+0

+1 좋은 질문 – Warewolf

답변

2

경로가 올바르게 닫히지 않아 첫 번째 점과 마지막 점 사이의 직선이 보이지 않습니다. 마지막 세 점은 이 아니고 addLineToPoint을 사용해야합니다. 그러면 거기에있을 것입니다.

+0

나는 addlineetopoint를 사용하지 않는다. 거기에 선을 추가하고 싶지 않다 ... 나는 그것을 얻는다. –

+1

addLineToPoint는 단순히 보이지 않는 커서를 움직이지만 경로에는 아무 것도 추가하지 않으므로 아무 것도하지 않는다. 그래프 아래의 모든 것을 채우고 싶다면 마지막 점에서 축에 수직으로, 가로로 x 축을 따라, 그리고 moveToPoint를 가지고있는 첫 번째 점까지 수직으로 addLineToPoint를 사용해야합니다. 그래프 상단이 검은 색으로 표시되도록하려면이 점을 추가하거나 경로를 먼저 닫지 않고 경로를 획 긋으십시오. 그런 다음 3 줄을 추가하고 채 웁니다. –

+0

고마워요 ...! –

2

필자가 이해하는 한, 그 경로를 획정하고 다른 영역 (경로와 축 사이의 영역)을 채우고 싶습니다.

두 가지 경로를 사용해야합니다. 뇌졸중을 위해 지금 당장 드로잉 한 것이고, 채우기를 위해 또 다른 것이 있습니다. 동시에 두 경로를 모두 작성하지만 좌표계의 시작점에서 채우기 경로를 시작하고 그래프의 시작 부분에 선을 추가하십시오. 두 경로에 줄을 추가하고 마지막에 채우기 경로의 x 축에 한 줄을 추가하고 채우기 경로를 닫으면 작업이 완료됩니다.

+0

예. 나는 그것을했고 지금은 작동 중입니다. 고마워요! –