zoukankan      html  css  js  c++  java
  • [转载]在uiview上画线.写字(转)

    #import "WhiteBoardView.h"


    @implementation WhiteBoardView


    - (id)initWithFrame:(CGRect)frame {        //1
        if (self = [super initWithFrame:frame]) {        //2
           
            self.backgroundColor = [UIColor clearColor];        //3
            self.opaque=0.5;
           
            CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();   
            whiteBoardContext = CGBitmapContextCreate(NULL, self.frame.size.width, self.frame.size.height, 8,
                                                      4 *self.frame.size.width, colorSpace, kCGImageAlphaPremultipliedFirst);       
            CGColorSpaceRelease(colorSpace) ;       
           
            whiteBoardLayer = CGLayerCreateWithContext(whiteBoardContext, self.frame.size, NULL);       
            CGContextRef layerContext  = CGLayerGetContext(whiteBoardLayer);       
           
            CGContextSetLineWidth(layerContext, 20);       
            CGContextSetLineCap(layerContext, kCGLineCapRound);       
            CGContextSetRGBStrokeColor(layerContext, 0.0,0.0,0.0,1);   
           
            //UIImageView *imgView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1.jpg"]];
    //        imgView.frame=CGRectMake(150, 150, 150, 150);
    //        [self insertSubview:imgView atIndex:0];
           
        }
        return self;   
    }


    - (void)drawRect:(CGRect)rect {       
        CGContextRef currentContext = UIGraphicsGetCurrentContext();   
       
        CGImageRef image = CGBitmapContextCreateImage(whiteBoardContext);       
        CGContextDrawImage(currentContext, [self bounds], image);       
        CGContextDrawLayerInRect(currentContext    , [self bounds], whiteBoardLayer);       

    }

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{   
        UITouch *theTouch = [touches anyObject];                      
        if ([theTouch tapCount] == 2)
        {                                   
            CGContextClearRect(whiteBoardContext, [self bounds]);      
            [self setNeedsDisplay];                                       
        }else
        {                                                           
            [self touchesMoved:touches withEvent:event];               
        }
    }

    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{   
        UITouch *theTouch = [touches anyObject];                       
        CGPoint currentTouchLocation = [theTouch locationInView:self];   
        CGPoint lastTouchLoacation = [theTouch previousLocationInView:self];   
        CGContextRef layerContext = CGLayerGetContext(whiteBoardLayer);           
        CGContextBeginPath(layerContext);                                       
        CGContextMoveToPoint(layerContext, lastTouchLoacation.x, lastTouchLoacation.y);       
        CGContextAddLineToPoint(layerContext, currentTouchLocation.x, currentTouchLocation.y);   
        CGContextStrokePath(layerContext);                                       
       
        [self setNeedsDisplay];                                                   
       
    }

    - (void)dealloc {
        CGContextRelease(whiteBoardContext);                                    //35
        CGLayerRelease(whiteBoardLayer);                                        //46
        [super dealloc];
    }


    @end

  • 相关阅读:
    PHP标准库 (SPL) 笔记
    PHP反射
    PHPer书单
    深入理解面向对象——六大基本原则
    Session自定义存储及分布式存储
    06- Shell脚本学习--其它
    05- Shell脚本学习--函数
    04- Shell脚本学习--条件控制和循环语句
    03- Shell脚本学习--字符串和数组
    02- Shell脚本学习--运算符
  • 原文地址:https://www.cnblogs.com/zhwl/p/2851301.html
Copyright © 2011-2022 走看看