2013-07-11 166 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

編輯該問題。請閱讀 –

+0

+1好問題 – Warewolf

回答

2

看起來你沒有正確地關閉你的路徑,因此第一個和最後一個點之間的直線。您應該使用addLineToPoint作爲最後三點,而不僅僅是moveToPoint,然後我認爲您會在那裏。

+0

我不能使用addlinetopoint,因爲我不想在那裏添加一行...我希望你得到它 –

+1

addLineToPoint只是移動不可見的光標,但不會添加任何東西到你的路徑,所以不會做任何事情。如果您只想填充圖表下方的所有內容,則需要使用垂直於軸的最後一個點的addLineToPoint,沿着x軸水平,然後垂直移動到第一個點,這與moveToPoint具有的是相同的。如果您只是想讓圖形的頂部顯示爲黑色,那麼不用添加這些點或先關閉路徑即可對您的路徑進行描邊。然後添加3行並填充它。 –

+0

謝謝男人......! –

2

據我所知,您想要描述該路徑,但要填充不同的區域(路徑和軸之間的區域)。

您必須使用兩條路徑。你現在正在畫中風,另一個是填充。同時構建兩條路徑,但從座標系的原點開始填充路徑,並在圖的開頭添加一行。繼續向兩條路徑添加直線,並在最後向填充路徑的x軸添加一條直線,關閉填充路徑並完成。

+0

是的,我做到了,現在它正在工作..謝謝你! –