• [转载]在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

  • 相关阅读:
    浏览器中复制不能复制的文档并使用word通配符进行高级替换整理
    windows找回映像文件“装载”快捷菜单
    python如何得到模块所在的目录
    搜狗五笔输入法自定义短语使用及设置
    启动office应用更新失败无法进入excel、word、visio的问题解决
    使用ssh登录windows10
    python的索引与切片
    python列表和元组的操作函数
    Python字符串的格式化
    与python字符串相关的一些函数
  • 原文地址:https://www.cnblogs.com/zhwl/p/2851301.html
Copyright © 2020-2023  润新知