Wednesday 18 December 2013

draw user define lines and curves in iPhone

This code is used to draw user define lines and curves on iPhone app. This code is used to draw line paint brush on iPhone app.

 1. Code for .h file.

@interface UIMyController : UIViewController {

IBOutlet UIView *viewField;
UIImageView *drawImage;
BOOL mouseSwiped;
CGPoint lastPoint;

}

@end

 2. code for .m file
 
- (void)viewDidLoad {
    [super viewDidLoad];
   
 
    drawImage = [[UIImageView alloc] initWithImage:nil];
    drawImage.frame = viewField.frame;
    [self.view addSubview:drawImage];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
   
 
    mouseSwiped = NO;
    UITouch *touch = [touches anyObject];
   
 
    if ([touch tapCount] == 2) {
        drawImage.image = nil;
        return;
    }
   
 
    lastPoint = [touch locationInView:viewField];
    //lastPoint.y = 20;
   
 
}


- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    mouseSwiped = YES;
    UITouch *touch = [touches anyObject];   
 
    CGPoint currentPoint = [touch locationInView:viewField];
    //currentPoint.y -= 20; // only for 'kCGLineCapRound'
    UIGraphicsBeginImageContext(viewField.frame.size);
    //Albert Renshaw - Apps4Life
    [drawImage.image drawInRect:CGRectMake(0, 0, drawImage.frame.size.width, drawImage.frame.size.height)]; //originally self.frame.size.width, self.frame.size.height)];
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); //kCGLineCapSquare, kCGLineCapButt, kCGLineCapRound
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0); // for size
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0); //values for R, G, B, and Alpha
    CGContextBeginPath(UIGraphicsGetCurrentContext());
    CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
    CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
    CGContextStrokePath(UIGraphicsGetCurrentContext());
    drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
   
 
    lastPoint = currentPoint;   
 
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
   
 
    UITouch *touch = [touches anyObject];
   
 
    if ([touch tapCount] == 2) {
        drawImage.image = nil;
        return;
    }
    if(!mouseSwiped) {
        //if color == green
        UIGraphicsBeginImageContext(viewField.frame.size);
        [drawImage.image drawInRect:CGRectMake(0, 0, drawImage.frame.size.width, drawImage.frame.size.height)]; //originally self.frame.size.width, self.frame.size.height)];
        CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); //kCGLineCapSquare, kCGLineCapButt, kCGLineCapRound
        CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
        CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
        CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
        CGContextStrokePath(UIGraphicsGetCurrentContext());
        CGContextFlush(UIGraphicsGetCurrentContext());
        drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
}

No comments:

Post a Comment

Comment