нарисовать линию в задаче UIImageView - PullRequest
1 голос
/ 25 марта 2009

В моем приложении я могу нарисовать линию в UIImageView с помощью приведенного ниже кода, и я хочу перерисовать линию еще дольше, когда я вызываю функцию, однако вывод получится не таким, как ожидалось, он просто нарисует новую Выровняйте и удалите старую, длина остается неизменной, а позиция y отличается, я не знаю, какая строка в моем коде неверна, или я не понимаю класс CGContext правильно, пожалуйста, помогите мне почесать голову все дни и не может выяснить проблему

- (void) drawLine {
    lastPoint = currentPoint;
    lastPoint.y -= 40;

    //drawImage is a UIImageView declared at header
    UIGraphicsBeginImageContext(drawImage.frame.size);
    [drawImage.image drawInRect:CGRectMake(0, 0, drawImage.frame.size.width, drawImage.frame.size.height)];

    //sets the style for the endpoints of lines drawn in a graphics context
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSetLineCap(ctx, kCGLineCapButt);
    //sets the line width for a graphic context
    CGContextSetLineWidth(ctx,2.0);
    //set the line colour
    CGContextSetRGBStrokeColor(ctx, 1.0, 0.0, 0.0, 1.0);
    //creates a new empty path in a graphics context
    CGContextBeginPath(ctx);
    //begin a new path at the point you specify
    CGContextMoveToPoint(ctx, currentPoint.x, currentPoint.y);
    //Appends a straight line segment from the current point to the provided point 
    CGContextAddLineToPoint(ctx, currentPoint.x,lastPoint.y);
    //paints a line along the current path
    CGContextStrokePath(ctx);
    drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    currentPoint = lastPoint;
}

1 Ответ

2 голосов
/ 02 февраля 2010

Я уверен, что вы закончили с этим, но у вас есть опечатка.

CGContextAddLineToPoint(ctx, currentPoint.x,lastPoint.y);

должно быть:

CGContextAddLineToPoint(ctx, lastPoint.x,lastPoint.y);
...