zoukankan      html  css  js  c++  java
  • 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;
    }


    以下为效果图

  • 相关阅读:
    pku3486Computers 动态规划
    pku2229sumsets(zjgsu,分花)
    pku2663Tri Tiling递推题
    pku1015Jury Compromise 动态规划
    pku3508Hide That Number一道加密算法题
    pku动态规划题目列表
    浅谈XXE攻击
    PHP核心配置详解
    SSRF漏洞用到的其他协议(dict协议,file协议)
    php中使用CURL之php curl详解
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5174654.html
Copyright © 2011-2022 走看看