Хотите добавить опцию ручного стирания в приложении ipad painting от Quartz - PullRequest
0 голосов
/ 05 октября 2010

Я работаю над приложением рисования, используя Quartz 2D для iPad. Теперь я хочу добавить параметр ластика, чтобы пользователь мог вручную стереть часть своей нарисованной линии прикосновением. У меня также есть фоновое изображение. Может кто-нибудь, пожалуйста, помогите?

Ответы [ 2 ]

4 голосов
/ 09 октября 2012

да, это хорошо работает в моем приложении; -)

во-первых вы добавили этот код в контакт начал

UITouch *touch = [touches anyObject];
        lastPoint = [touch locationInView:imgview];
        UIGraphicsBeginImageContext(imgview.frame.size);
        [imgview.image drawInRect:CGRectMake(0, 0, imgview.frame.size.width, imgview.frame.size.height)];
        CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
        CGContextSetLineWidth(UIGraphicsGetCurrentContext(), lineWidth);
        CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor colorWithPatternImage:img].CGColor);
        CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [UIColor clearColor].CGColor);
        CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);
        CGContextBeginPath(UIGraphicsGetCurrentContext());

здесь - это фоновое изображение, затем при касании вы просто пишете код обводки линии, код которого

UITouch *touch = [touches anyObject];
        CGPoint currentPoint = [touch locationInView:imgview];
        NSLog(@"asdasdas");
        CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
        CGContextStrokePath(UIGraphicsGetCurrentContext());
        imgview.image = UIGraphicsGetImageFromCurrentImageContext();
        lastPoint = currentPoint;

тогда вы увидите, что конечный результат будет производить; -)

0 голосов
/ 12 февраля 2013
if(erase)
    {
        UITouch *touch = [touches anyObject];
        CGPoint currentTouch = [touch locationInView:extraImageVw];

        CGFloat brushSize;
        if (isEraser)
        {
            brushSize=25.0;
        }
        else
        {
            brushSize=25.0;
        }
        CGColorRef strokeColor = [UIColor whiteColor].CGColor;

        UIGraphicsBeginImageContext(extraImageVw.frame.size);

        CGContextRef context = UIGraphicsGetCurrentContext();
        [extraImageVw.image drawInRect:CGRectMake(0, 0, extraImageVw.frame.size.width, extraImageVw.frame.size.height)];
        CGContextSetLineCap(context, kCGLineCapRound);
        CGContextSetLineWidth(context, brushSize);
        if (isEraser) {
            CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:fullPathToFile]].CGColor);
        }
        else
        {
            CGContextSetStrokeColorWithColor(context, strokeColor);
            CGContextSetBlendMode(context, kCGBlendModeClear);
        }
        CGContextSaveGState(UIGraphicsGetCurrentContext());
        CGContextBeginPath(context);
        CGContextMoveToPoint(context, Lastpoint.x, Lastpoint.y);
        CGContextAddLineToPoint(context, currentTouch.x, currentTouch.y);
        CGContextStrokePath(context);
        extraImageVw.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        Lastpoint = [touch locationInView:extraImageVw];


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...