iOS画图 在控件中画图,并实现清理

来源:互联网 发布:mysql 日志回滚 编辑:程序博客网 时间:2024/05/10 23:37

//

//  SCHView.m

//  touchSCHEvent

//

//  Created by tianshangrenjian on 15/6/29.

//  Copyright (c) 2015 tianshangrenjian. All rights reserved.

//


#import "SCHView.h"

@interface SCHView()

@property (strong ,nonatomic) NSMutableArray *points;

@end

@implementation SCHView


- (NSMutableArray*) points

{

   if (_points==nil) {

       _points=[[NSMutableArrayalloc] init];

    }

    return_points;

}

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

    // Drawing code

    

    CGContextRef ctx=UIGraphicsGetCurrentContext();

   for (int i=0; i<self.points.count; i++) {

       CGPoint point=[self.points[i]CGPointValue];

       if (i==0) {

           CGContextMoveToPoint(ctx, point.x, point.y);

        }

       else

        {

           CGContextAddLineToPoint(ctx, point.x, point.y);

        }

    }

    

    [[UIColorblueColor] set];

    CGContextSetLineWidth(ctx,20);

    CGContextSetLineJoin(ctx,kCGLineCapSquare);//设置线条拐角

    CGContextSetLineCap(ctx,kCGLineCapRound);//设置连接线的样式

//    CGContextMoveToPoint(ctx, 10, 10);

//    CGContextAddLineToPoint(ctx, 80, 50);

    CGContextStrokePath(ctx);

}



/*

 鼠标在其上点击时触发的事件

 

 */

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

   UITouch *touch=[touches anyObject];

   CGPoint p=[touch locationInView:touch.view];

    [self.pointsaddObject:[NSValuevalueWithCGPoint:p]];//结构体转换为对象

    

   NSLog(@"%zd",touches.count);

    NSLog(@"鼠标在其上点击时触发的事件");

    [selfsetNeedsDisplay];

}


/*

 鼠标在其上移动时触发的事件

 

 */

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

    

   UITouch *touch=[touches anyObject];

    

   CGPoint point=[touch previousLocationInView:touch.view];

    

    [self.pointsaddObject:[NSValuevalueWithCGPoint:point]];

    [selfsetNeedsDisplay];

    

//     NSLog(@"鼠标在其上移动时触发的事件");

//    UITouch *touch=[touches anyObject];

//    CGPoint prevPoint=[touch previousLocationInView:touch.view];

//    CGPoint currentPoint=[touch locationInView:touch.view];

//    

//    CGPoint centerPoint=touch.view.center;

//    

//    centerPoint.x+=currentPoint.x- prevPoint.x;

//    centerPoint.y+=currentPoint.y- prevPoint.y;

//    

// //   touch.view.center=currentPoint;

//    

//    touch.view.center=centerPoint;

}

/*

 鼠标在离开其上的时触发的事件

 

 */

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

     NSLog(@"鼠标在离开其上的时触发的事件");

   UITouch *touch=[touches anyObject];

    

    [self.pointsaddObject:[NSValuevalueWithCGPoint:[touch previousLocationInView:touch.view]]];

    [selfsetNeedsDisplay];

}

- (void)addPoint:(NSSet *)touches

{

    [selfaddPoint:touches];

}

- (void)clear

{

   if (self.points.count==0) {

       return;

    }

    [self.pointsremoveAllObjects];

   self.points=nil;

    [selfsetNeedsDisplay];

}

@end


0 0
原创粉丝点击