当前位置:编程学习 > wap >>

ios 三种颜色画笔和橡皮擦的画图板demo

demo功能:三种颜色画笔和橡皮擦的画图板demo 【iphone 6.1 测试通过】

demo说明:项目中PaintView.m 是demo的画板部分,PaintView和三个颜色按钮添加到ViewController的view中。构成程序主界面。

demo截屏:

 

\

 


demo主要代码:PaintView.m 画板view部分


[csharp] 
#import "PaintView.h" 
#import <QuartzCore/QuartzCore.h>  
 
@implementation PaintView 
@synthesize paintColor = _paintColor; 
@synthesize erase; 
- (id)initWithFrame:(CGRect)frame 

    self = [super initWithFrame:frame]; 
    if (self) { 
        self.layer.shadowColor = [UIColor blackColor].CGColor; 
        self.layer.shadowOpacity = 0.8; 
        self.layer.shadowOffset = CGSizeMake(5, 5); 
        self.backgroundColor = [UIColor whiteColor]; 
        self.paintColor = [UIColor blackColor]; 
        // Initialization code  
        linesArray = [[NSMutableArray alloc]init]; 
        UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self 
                                                                                    action:@selector(panGesture:)]; 
        [self addGestureRecognizer:panGesture]; 
        [panGesture release]; 
    } 
    return self; 

 
- (void)dealloc { 
    [linesArray release]; 
    [_paintColor release]; 
    [super dealloc]; 

 
// Only override drawRect: if you perform custom drawing.  
// An empty implementation adversely affects performance during animation.  
- (void)drawRect:(CGRect)rect 

    // Drawing code  
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 20); 
    //NSLog(@"color:%@",_paintColor);  
 
    for (NSDictionary *lineDic in linesArray) { 
        UIColor *lineColor = [lineDic objectForKey:@"color"]; 
        CGContextSetStrokeColorWithColor(context, lineColor.CGColor); 
        CGMutablePathRef paintPath = CGPathCreateMutable(); 
        NSArray *linePointArray = [lineDic objectForKey:@"line"]; 
        for (NSInteger i=0; i<linePointArray.count; i++) { 
            CGPoint point = [[linePointArray objectAtIndex:i]CGPointValue]; 
            if (i==0) { 
                //CGContextMoveToPoint(context, point.x, point.y);  
                CGPathMoveToPoint(paintPath, NULL, point.x, point.y); 
            }else { 
                //CGContextAddLineToPoint(context, point.x, point.y);  
                CGPathAddLineToPoint(paintPath, NULL, point.x, point.y); 
            } 
        } 
        CGContextAddPath(context, paintPath); 
        CGContextStrokePath(context); 
         
        if ([lineDic objectForKey:@"eraseArray"]) { 
            //NSLog(@"color:%@",lineColor);  
            NSMutableArray *eraseArray = [lineDic objectForKey:@"eraseArray"]; 
            CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); 
            CGMutablePathRef paintPath = CGPathCreateMutable(); 
            for (NSInteger i=0; i<eraseArray.count; i++) { 
                CGPoint point = [[eraseArray objectAtIndex:i]CGPointValue]; 
                //NSLog(@"erase point:%@",NSStringFromCGPoint(point));  
                if (i==0) { 
                    //CGContextMoveToPoint(context, point.x, point.y);  
                    CGPathMoveToPoint(paintPath, NULL, point.x, point.y); 
                }else { 
                    //CGContextAddLineToPoint(context, point.x, point.y);  
                    CGPathAddLineToPoint(paintPath, NULL, point.x, point.y); 
                } 
            } 
            CGContextAddPath(context, paintPath); 
            CGContextStrokePath(context); 
        } 
    } 

 
 
-(void)panGesture:(UIPanGestureRecognizer*)thePan{ 
    CGPoint touchPoint = [thePan locationInView:self]; 
    if (self.erase) { 补充:移动开发 , IOS ,

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,