2014-11-25 137 views
0

我已經繪製了使用cgpoints的路徑,但路徑中充滿了虛線。我想中風虛線。如何使用cgcontext iOS繪製虛線?

我的代碼:

CGPoint Point1=CGPointMake(184.9489, 383.4082); 
CGPoint Point2=CGPointMake(184.9489, 383.4082); 
CGPoint Point3=CGPointMake(184.2969, 377.911); 
CGPoint Point4=CGPointMake(184.2969, 377.911); 
CGPoint Point5=CGPointMake(184.2443, 372.978); 
CGPoint Point6=CGPointMake(184.2443, 372.978); 
NSArray *arry1=[NSArray arrayWithObjects:[NSNumber numberWithFloat:Point1.x],[NSNumber numberWithFloat:Point3.x],[NSNumber numberWithFloat:Point5.x],nil]; 
NSArray *arry2=[NSArray arrayWithObjects:[NSNumber numberWithFloat:Point1.y],[NSNumber numberWithFloat:Point3.y],[NSNumber numberWithFloat:Point5.y],nil]; 
NSArray *arry3=[NSArray arrayWithObjects:[NSNumber numberWithFloat:Point2.x],[NSNumber numberWithFloat:Point4.x],[NSNumber numberWithFloat:Point6.x],nil]; 
NSArray *arry4=[NSArray arrayWithObjects:[NSNumber numberWithFloat:Point2.y],[NSNumber numberWithFloat:Point4.y],[NSNumber numberWithFloat:Point6.y],nil]; 
for(int i=0;i<[arry2 count];i++) 
{ 
    UIGraphicsBeginImageContext(self.view.frame.size); 
    [img_View.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 3); 
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); 
    CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), 
            [UIColor blueColor].CGColor); 
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), [[arry1 objectAtIndex:i]floatValue], [[arry2 objectAtIndex:i]floatValue]); 
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), [[arry3 objectAtIndex:i]floatValue], [[arry4 objectAtIndex:i]floatValue]); 
    CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeColor); 
    CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathFillStroke); 
    CGContextStrokePath(UIGraphicsGetCurrentContext()); 
    img_View.image = UIGraphicsGetImageFromCurrentImageContext(); 
    [img_View setAlpha:1]; 
    UIGraphicsEndImageContext();} 

的O/P爲:(垂直3點)。 預期結果:結合這三點。 任何人都可以提供一些關於這方面的信息嗎? 在此先感謝。

回答

0

問題是在每個循環中,線的起點和終點都是相同的點,所以它繪製爲點。如果您記錄點值,您將看到它。以下代碼將繪製2行。

UIGraphicsBeginImageContext(self.view.frame.size); 
[_imageView.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 3.0); 
CGContextSetLineCap(context, kCGLineCapRound); 
CGContextSetStrokeColorWithColor(context, 
           [UIColor greenColor].CGColor); 

for(int i=0;i<arry2.count;i++) 
{ 
    if (i == 0) 
    CGContextMoveToPoint(context,[[arry1 objectAtIndex:i]floatValue] ,[[arry2 objectAtIndex:i]floatValue]); 
    CGContextAddLineToPoint(context, [[arry3 objectAtIndex:i]floatValue], [[arry4 objectAtIndex:i]floatValue]); 
} 
CGContextSetBlendMode(context,kCGBlendModeColor); 
CGContextDrawPath(context, kCGPathFillStroke); 
CGContextStrokePath(context); 

_imageView.image = UIGraphicsGetImageFromCurrentImageContext(); 
[_imageView setAlpha:1]; 
UIGraphicsEndImageContext(); 
+0

Thanks Gabbler.It的工作完美。 – 2014-11-25 12:15:36