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

  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/zhwl/p/2851301.html
Copyright © 2011-2022 走看看