首页 > 代码库 > ios创建画笔的例子(双笔画效果)
ios创建画笔的例子(双笔画效果)
定义一个UIView:主要是在这个View里面加一个UIImageView,画图都在这个UIImageView里面进行
@property(nonatomic) CGPoint prePoint; //手指在进入move事件之前的那个点 @property(nonatomic) CGPoint oppsitePoint; //手指在进入move事件之前的那个点 @property(nonatomic, retain) UIImageView* drawImage; - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code self.drawImage = [[UIImageView alloc] initWithImage:nil]; self.drawImage.frame = self.frame; [self addSubview:_drawImage]; } return self; }
然后处理手指的事件
#pragma mark - deal touch -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"touchesBegan"); //下面两句知道手指在屏幕上的点的信息 UITouch* touch = [touches anyObject]; CGPoint point = [touch locationInView:self]; if (touch) { self.prePoint = point; _oppsitePoint = point; _oppsitePoint.x = 320.0f - point.x; } } -(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"touchesMoved"); UITouch* touch = [touches anyObject]; if (touch) { CGPoint point = [touch locationInView:self]; UIGraphicsBeginImageContext(self.frame.size); [_drawImage.image drawInRect:CGRectMake(0, 0, _drawImage.frame.size.width, _drawImage.frame .size.height)]; CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 2.0f); CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(),0.314, 0.486, 0.859, 1.0); CGContextBeginPath(UIGraphicsGetCurrentContext()); CGContextMoveToPoint(UIGraphicsGetCurrentContext(), _prePoint.x, _prePoint.y); CGContextAddQuadCurveToPoint(UIGraphicsGetCurrentContext(), _prePoint.x, _prePoint.y, point.x, point.y); CGContextMoveToPoint(UIGraphicsGetCurrentContext(), _oppsitePoint.x, _oppsitePoint.y); CGContextAddQuadCurveToPoint(UIGraphicsGetCurrentContext(), _oppsitePoint.x, _oppsitePoint.y, 320.0f - point.x, point.y); // CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), point.x, point.y); CGContextStrokePath(UIGraphicsGetCurrentContext()); _drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); _prePoint = point; _oppsitePoint = point; _oppsitePoint.x = 320.0f - point.x; } } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ NSLog(@"touchesEnded"); //这段的作用是如果在屏幕上点击可以画出点 UIGraphicsBeginImageContext(self.frame.size); [_drawImage.image drawInRect:CGRectMake(0, 0, _drawImage.frame.size.width, _drawImage.frame .size.height)]; CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound); CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 3.0f); CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(),0.314, 0.486, 0.859, 1.0); CGContextBeginPath(UIGraphicsGetCurrentContext()); CGContextMoveToPoint(UIGraphicsGetCurrentContext(), _prePoint.x, _prePoint.y); CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), _prePoint.x, _prePoint.y); CGContextStrokePath(UIGraphicsGetCurrentContext()); _drawImage.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.isTouch = NO; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。