Как я могу создать ластик для этой строки в XCode? - PullRequest
1 голос
/ 10 декабря 2011

Как, у меня есть этот код.Когда касание перемещено, представление добавляет линию.Теперь, если я хочу создать ластик для этой линии, как я могу это сделать?Пожалуйста, ответьте мне рано!

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [touches anyObject];   
    CGPoint currentPoint = [touch locationInView:drawView];

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

    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), brushDimension);

    const CGFloat *components = CGColorGetComponents([brushColor CGColor]);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), components[0], components[1], components[2], components[3]);

    CGContextBeginPath(UIGraphicsGetCurrentContext());
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());

    drawView.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    lastPoint = currentPoint;   
}

Ответы [ 2 ]

4 голосов
/ 11 декабря 2011

Если вы ищете функцию стирания, которую пользователь может использовать касаниями, чтобы стереть часть строки вместо отмены, предоставленной RickyTheCoder, у вас есть 2 варианта.

  1. Первый вариант - использовать кисть с тем же цветом фона фоновый вид, поэтому он воспринимается как линия была стерта в то время как на самом деле только что закрасил цветом, который совпадает с цветом фона.

  2. Второй вариант - использовать кисть с чистым цветом и установить очистить режим наложения, чтобы стереть линию, и фоновый вид все еще виден.

    if (isErase) {

    CGContextSetLineWidth(currentContext, 10);
    
    CGContextSetStrokeColorWithColor(currentContext, [UIColor clearColor].CGColor);
    
    CGContextSetFillColorWithColor(currentContext, [UIColor clearColor].CGColor);
    
    CGContextSetBlendMode(currentContext, kCGBlendModeClear);
    
    CGContextDrawPath(currentContext, kCGPathStroke);
    

    }

0 голосов
/ 10 декабря 2011
...