Add the following code to the .h file that you want to paint on.
 UIImageView *drawImage;
 int mouseMoved;
 BOOL mouseSwiped;
 CGPoint lastPoint;
Add the following code to the .m file that you want to paint on.
- (void)viewDidLoad {
    [super viewDidLoad];
 // New code for Drawing App. Delete if it does not work.
 drawImage = [[UIImageView alloc] initWithImage:nil];
 drawImage.frame = self.view.frame;
 [self.view addSubview:drawImage];
 mouseMoved = 0;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
 mouseSwiped = NO;
 UITouch *touch = [touches anyObject];
 if ([touch tapCount] == 2) {
  drawImage.image = nil;
  return;
 }
 lastPoint = [touch locationInView:self.view];
 lastPoint.y -= 20;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
 mouseSwiped = YES;
 UITouch *touch = [touches anyObject]; 
 CGPoint currentPoint = [touch locationInView:self.view];
 currentPoint.y -= 20; // only for 'kCGLineCapRound'
 UIGraphicsBeginImageContext(self.view.frame.size);
 [drawImage.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
 CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
 CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 5.0);
 CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 1.0, 0.0, 0.0, 1.0);
 CGContextBeginPath(UIGraphicsGetCurrentContext());
 CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint.x, lastPoint.y);
 CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
 CGContextStrokePath(UIGraphicsGetCurrentContext());
 drawImage.image = UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();
 lastPoint = currentPoint;
 mouseMoved++;
 if (mouseMoved == 10) {
  mouseMoved = 0;
 }
}
- (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(self.view.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(), 10.0);
  CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 0.0, 1.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();
 }
}
Can some help me make a clear button to wipe ? E-mail timbojill@gmail.com. I do not read posts.
Nice.
ReplyDelete