2014-02-19 98 views
0

我想用CGContext繪製不同顏色的線條。iPhone CGContext:用兩種不同顏色繪製線條

這是我的代碼

CGSize size = CGSizeMake(200, 200); 
    UIGraphicsBeginImageContextWithOptions(size, NO, 0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 2.0); 
    CGContextMoveToPoint(context, 1, 1); 

    CGContextBeginPath(context); 
    CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
    CGContextAddLineToPoint(context, 50, 50); 
    CGContextAddLineToPoint(context, 100, 50); 
    CGContextStrokePath(context); 

    CGContextBeginPath(context); 
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
    CGContextAddLineToPoint(context, 200, 100); 
    CGContextStrokePath(context); 

我想這個代碼,其將返回錯誤:

<Error>: CGContextAddLineToPoint: no current point. 
+1

開始之前您可以使用'CGPathGetCurre獲取當前點的新路徑ntPoint'並使用它開始新的路徑 –

+1

我不確定你的問題是什麼,但不僅僅是一個moveToPoint:你開始第二個路徑後失蹤... – Volker

+0

謝謝@Volker。當我開始第二條路徑時,我添加了moveToPoint:在我的代碼中。它的工作正常。 – user1831389

回答

2
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextClearRect(context, rect); 
CGContextSetLineWidth(context, 2.0); 

CGContextBeginPath(context); 
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextMoveToPoint(context, 1, 1); 
CGContextAddLineToPoint(context, 100, 100); 
CGContextStrokePath(context); // and draw blue line 

CGContextBeginPath(context); 
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
CGContextMoveToPoint(context, 100, 100); 
CGContextAddLineToPoint(context, 200, 100);  
CGContextStrokePath(context); // draw red line 
0

下面的代碼也許可以幫助您:

CGSize size = CGSizeMake(200, 200); 
//UIGraphicsBeginImageContextWithOptions(size, NO, 0); //comment this line, if you want a image, see bottom two line. 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 2.0); 

CGContextBeginPath(context); 
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextMoveToPoint(context, 1, 1); //MoveToPoint First 
CGContextAddLineToPoint(context, 50, 50); 
CGContextAddLineToPoint(context, 100, 50); 
CGContextStrokePath(context); 

CGContextBeginPath(context); 
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
CGContextMoveToPoint(context, 100, 50); //MoveToPoint First 
CGContextAddLineToPoint(context, 200, 100); 
CGContextStrokePath(context); 

//UIImage* resultImage = UIGraphicsGetImageFromCurrentImageContext(); //if you just need a image 
//UIGraphicsEndImageContext(); //match UIGraphicsBeginImageContextWithOptions, if need a image 
相關問題