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


    以下为效果图

  • 相关阅读:
    深入理解Linux系统调用:write/writev
    MySQL基础语法
    Ubuntu20.04安装MySQL8.0
    关系数据库(事务:一致性+隔离级别)
    基于mykernel 2.0编写一个操作系统内核
    信息安全 学习笔记(1)——常用攻击、网络命令、ARP安全、IP安全
    AI画风迁移——Style Change
    百度算法题回忆
    Java机试--输入输出
    【竞赛项目】阿里天池数据挖掘比赛——快来一起挖掘幸福感
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5174654.html
Copyright © 2020-2023  润新知