2013-05-01 41 views
0

我正在使用Core Graphics中的弧畫一個完整的圓。圓的每個圓弧都是不同的顏色。如果我使用標準顏色(例如[UIColor redColor]),它會很好。但是,如果我指定了一種自定義顏色(例如自定義的紅色[UIColor colorWithRed:193 green:69 blue:57 alpha:1]),那麼顏色會丟失,並且會變成白色?!iPhone - 使用自定義顏色不起作用的CGDrawArc上的setStroke

下面的屏幕截圖,我也在那裏編寫了一個輕微的陰影和半透明的圓圈。

result using custom colour

我的代碼如下,它包含我的自定義視圖的drawRect方法中。關於如何將自定義顏色用於每個弧的筆畫的任何想法?

for (DoughnutChartSliceObject *slice in _slices) { 

    CGContextAddArc(ctx, self.frame.size.width/2, self.frame.size.height/2, _radius, slice.startAngleInRadians, slice.endAngleInRadians, 0); 
    [slice.colour setStroke]; 

    //Define line width and cap 
    CGContextSetLineWidth(ctx, _stroke); 
    CGContextSetLineCap(ctx, kCGLineCapButt); 

    //draw it! 
    CGContextDrawPath(ctx, kCGPathStroke); 

} 

回答

3

UIColor的組件爲0.0至1.0。因此,我想你想:

[UIColor colorWithRed:193.0/255.0 green:69.0/255.0 blue:57.0/255.0 alpha:1] 
+0

順便說一句,而重新定義顏色佈局上面應該修復它,我個人傾向於使用'CGContextSetStrokeColorWithColor'(傳遞一個'CGColorRef'如' [slice.colour CGColor]')和'CGContextDrawPath'一起使用。當我使用'[myBezierPath筆畫]'時,我使用'setStroke',但是當我使用'CGContextDrawPath'時,我使用'CGContextSetStrokeColorWithColor'。也許這並不重要(或者至少在你沒有使用自定義上下文時),但看起來內部更一致。 – Rob 2013-05-01 02:47:19

+0

你美麗羅布:D這是問題!非常感謝! – bennythemink 2013-05-01 03:41:55

相關問題