Obj-C问题在两点之间画一条线

时间:2016-04-30 06:06:16

标签: ios objective-c core-graphics

我目前的对象代码:

- (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模拟器中使用上述代码看到的内容:

2 dots enter, no line leaves

1 个答案:

答案 0 :(得分:0)

尝试以下代码(根据您的要求进行修改):

获取两个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);

}