2016-04-30 2 views
0

Мой текущий код Obj-C:Вопросы Obj-C рисуя линию между двумя точками

- (void)slopeMode:(CGPoint)point{ 
    if (dPoint1.x != -1) //If a coordinate pos has already been set for dPoint1 
    { 
     dPoint2 = point; //Then set it in dPoint2 instead 


     [cPath moveToPoint: CGPointMake(dPoint1.x-5,dPoint1.y-5)]; 
     [cPath addLineToPoint:CGPointMake(dPoint2.x-5,dPoint2.y-5)]; 
     [cPath moveToPoint:CGPointMake(dPoint2.x-5,dPoint2.y-5)]; 

     [cPath addArcWithCenter:CGPointMake(dPoint2.x-5,dPoint2.y-5) radius:10 startAngle:0 endAngle:DEGREES_TO_RADIANS(360) clockwise:YES]; 

     [cPath closePath]; 
     [[UIColor greenColor] setStroke]; 
     [[UIColor greenColor] setFill]; 

     [cPath fill]; 
     [cPath stroke]; 

     gfxP1.path = [cPath CGPath]; 
     gfxP1.fillColor = [[UIColor greenColor] CGColor]; 
     gfxP1.lineWidth = 4.0; 

     [[wBView layer] addSublayer:gfxP1]; 

     rSlope = [self calcSlope:dPoint1 :dPoint2]; 

     [self callAlert:@"Slope Calculation" :[NSString stringWithFormat:@"%.*f",precision,rSlope] :@"OK"]; 

     //Reset datapoints 
     [self resetDPoint:&dPoint1]; 
     [self resetDPoint:&dPoint2]; 

     //Reset gfx 
     //[self resetCALayer:gfxP1]; 
     //[self resetCALayer:gfxP2]; 

     //Reset other vars 
     cSlope = -1; 
     rSlope = -1; 
     tempFStore = @""; 
    } 

    else 
    { 
     dPoint1 = point;   

     cPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(dPoint1.x-5,dPoint1.y-5) radius:10 startAngle:0 endAngle:DEGREES_TO_RADIANS(360) clockwise:YES];  
    } 
} 

Моя проблема заключается в том, что я в состоянии отобразить мои две точки в пределах моего объекта UIView, но линии я пытаюсь добавьте, что соединения этих двух точек вместе не создаются или отображаются неправильно. Вот то, что я вижу в IPhone Simulator, используя приведенный выше код:

2 dots enter, no line leaves

+0

см по этой ссылке, вы можете получить представление о http://stackoverflow.com/questions/8208469/draw-line-between-two-points-in-iphone и http://stackoverflow.com/questions/31775194/создать трёхлинейное расширение-для-заданной линии, сотворено по-пользователь –

ответ

0

Try ниже кода (Do модификацию согласно вашему требованию):

Получить два CGPoint и передать его методу ниже:

- (void)drawLine:(CGPoint)startPoint endPoint:(CGPoint)endPoint{ 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSaveGState(context); 
    CGContextSetStrokeColorWithColor(context, [[UIColor redColor]CGColor]);//adjust color 
    CGContextSetLineWidth(context, 1.0);//adjust line width 
    CGContextMoveToPoint(context, startPoint.x, startPoint.y); 
    CGContextAddLineToPoint(context, endPoint.x, endPoint.y); 
    CGContextStrokePath(context); 
    CGContextRestoreGState(context); 

} 
Смежные вопросы