2012-02-04 136 views
1

我是Objective-C和iOS開發的新手。我有一些核心繪圖繪製的圖。現在我想用顏色填充這些形狀,我不知道形狀的路徑或上下文。 Objective-C是否具有像填充填充或放置像素這樣的功能,以便通過只有筆畫顏色,我可以在視圖內填充任何形狀。如何用顏色填充形狀

-(void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 4.0);  
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();  
    CGFloat components[] = {1.0, 0.0, 0.0, 1.0};  
    CGColorRef color = CGColorCreate(colorspace, components);  
    CGContextSetStrokeColorWithColor(context, color); 

    CGContextMoveToPoint(context, 50, 0); 
    CGContextAddLineToPoint(context, 0,320); 

    CGContextStrokePath(context); 
    CGColorSpaceRelease(colorspace); 
    CGColorRelease(color); 


    CGContextSetLineWidth(context, 2.0); 

    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
    CGContextSetRGBFillColor(context, 0, 255, 0, 1.0); 

    CGContextMoveToPoint(context, 100, 100); 
    CGContextAddLineToPoint(context, 150, 150); 
    CGContextAddLineToPoint(context, 100, 200); 
    CGContextAddLineToPoint(context, 50, 150); 
    CGContextAddLineToPoint(context, 100, 100); 

    CGContextStrokePath(context); 

    CGContextSetLineWidth(context, 2.0); 

    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 

    CGRect rectangle = CGRectMake(60,170,200,80); 

    CGContextAddEllipseInRect(context, rectangle); 

    CGContextStrokePath(context); 
} 

這將使一個圓和一個廣場與一些共同的地區。當用戶點擊該區域時,我想要一個特定的區域填充顏色。

+0

嗨。你問這個問題後,你有沒有找到解決辦法?我也可以使用它。 – Levi 2013-04-18 15:22:35

回答

0

把你的繪圖代碼放在問題中,我可以給你一個具體的答案。

通常你只需要設置使用

[[UIColor redColor] setFill]; 

填充顏色和繪製任何形狀的圖形核心將充滿了色彩自動。

0

試試這個命令: -

CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
+0

事情是,我不想使用上下文或路徑。我想要一個類似於洪水填充的函數,或者如果你必須繪製任何視圖,你必須使用上下文來將像素放在c – superGokuN 2012-02-04 10:50:47

+0

中。 – Leena 2012-02-04 10:53:08

+0

這裏是一個教程,如果你想參考:http://www.techotopia.com/index.php/An_iPhone_Graphics_Drawing_Tutorial_using_Quartz_2D – Leena 2012-02-04 10:54:32

0

核芯顯卡是緊密聯繫在一起的UIView及其drawRect:方法,具有C接口。正如你指出的那樣,你總是在當前的圖形上下文中繪製。我可以想到2種方法:(1)當用戶點擊myView時,設置屬性如myView.pointTapped,並在drawRect:找到要填充的形狀,設置填充顏色,並使用GGGeometry方法填充封閉路徑。

有一個客觀的C選擇:(2)看看UIBezierPath。它不像Core Graphics中的繪圖那麼全面,但它可以用在你的實現中。