Эффект рисования линий - PullRequest
       2

Эффект рисования линий

0 голосов
/ 28 августа 2009

Я хочу нарисовать линию на UIImageView. Я уже рисую линию на UIImageView, но когда я хочу удалить эти строки, 7 перерисовывают новые линии, которых не может быть.

-(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;
}

Pls. Помоги мне. На самом деле я хочу получить эффект глянцевого эффекта. Это возможно в какао.

1 Ответ

3 голосов
/ 29 августа 2009

Надеюсь, я правильно понимаю ваш вопрос. Вы хотите нарисовать линию на UIImageView и иметь возможность удалить эту линию позже, правильно?

Ну, почему бы не выделить прозрачный UIView только для рисования и расположить его над UIImageView? Нарисуйте его метод -drawRect. Теперь, если вы просто сохраняете NSMutableArray каждой выполняемой вами операции рисования, становится легко удалить то, что вы нарисовали, вызывая [theArray removeLastObject] или [theArray removeAllObjects] до вызова метода drawRect. Когда вы удовлетворены своим рисунком в отдельном UIView, вы можете объединить два вида, добавив UIView в качестве подпредставления UIImageView, а затем получить «сплющенный» UIImage из UIImageView следующим образом:

//myImageView is your UIImageView
//myDrawingView is the transparent UIView that you drew on

[myImageView addSubview:myDrawingView];

//Create new image container to hold the flattened image
UIImage* newImage;

    //Now flatten the graphics
    UIGraphicsBeginImageContext(myImageView.bounds.size);
    [myImageView.layer renderInContext:UIGraphicsGetCurrentContext()];
    newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

Теперь у вас есть новый UIImage, который вы можете добавить в UIImageViews и делать с ним все, что захотите.

ВАЖНО:
1) Каждый раз, когда вызывается ваш метод -drawRect, все ваши рисунки стираются.
2) Вы не вызываете -drawRect напрямую. Вместо этого используйте [self setNeedsDisplay], чтобы нарисовать ваше представление.

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