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

  • 相关阅读:
    RabbitMQ安装(发生系统错误5。拒绝访问。发生系统错误1067。进程意外终止。)
    SQLServer执行脚本提示“系统找不到指定的文件”或“内存资源不足”
    TypeScript@HelloWorld!
    超详细Node安装教程
    进制转换
    菜鸟成长记
    ASP.NET Core中使用MialKit实现邮件发送
    VS未能正确加载 ”Microsoft.VisualStudio.Editor.Implementation.EditorPackate“包错误解决方法
    C#Winfrom Listview数据导入Excel
    安装研发服务器
  • 原文地址:https://www.cnblogs.com/zhwl/p/2851301.html
Copyright © 2011-2022 走看看