画图ii

2016-08-21  本文已影响13人  Dove_Q
 override func drawRect(rect: CGRect) {
        drawGrid()
        
        //1. 
        let context = UIGraphicsGetCurrentContext()
        //2.绘制矩形
        CGContextAddRect(context, CGRect(x: 100, y: 100, width: 100, height: 200))
        CGContextAddRect(context, CGRect(x: 150, y: 200, width: 100, height: 200))
        //绘制椭圆
        CGContextAddEllipseInRect(context, CGRect(x: 0, y: 0, width: 100, height: 200))
        CGContextAddEllipseInRect(context, CGRect(x: 200, y: 200, width: 100, height: 100))
        
        //绘制圆弧
        CGContextAddArc(context, 100, 100, 100, 0, CGFloat(M_PI_2), 1)
        
        //注意当前点的存在
        CGContextAddArcToPoint(context, 300, 200, 300, 400, 100)
        
        //贝兹曲线(贝塞尔曲线)
        //二次贝兹曲线: 第一个坐标为控制点,第二个坐标为终止点
        CGContextAddQuadCurveToPoint(context, 50, 0, 400, 300)
        
        CGContextMoveToPoint(context, 0, 300)
        //三次贝兹曲线: 第一个坐标为第一控制点,第二个坐标为第二控制点,第三个坐标为终止点
        CGContextAddCurveToPoint(context, 50, 100, 250, 200, 300, 300)
        
        //
        CGContextSetStrokeColor(context, [1, 0, 0, 1])
        //只绘制边框
//        CGContextStrokePath(context)
        //只填充
//        CGContextFillPath(context)
        //
        CGContextSetFillColor(context, [1, 1, 0, 1])
        //非零环绕数
        //Even-Odd
        CGContextDrawPath(context, .EOFillStroke)
    }
    //画坐标轴
    func drawGrid() {
        //1. 获取上下文
        let context = UIGraphicsGetCurrentContext()
        
        var y: CGFloat = 50
        while y < self.bounds.size.height {
            //2. 开始,设置绘制起点
            CGContextMoveToPoint(context, 0, y)
            //3. 往上下文上添加图形
            CGContextAddLineToPoint(context, self.bounds.size.width, y)
            y += 50
        }
        
        var x: CGFloat = 50
        while x < self.bounds.size.width {
            //2. 开始,设置绘制起点
            CGContextMoveToPoint(context, x, 0)
            //3. 往上下文上添加图形
            CGContextAddLineToPoint(context, x, self.bounds.size.height)
            
            x += 50
        }
        
        //保存当前的上下文状态
        CGContextSaveGState(context)
        
        //4. 设置颜色、样式、尺寸
        CGContextSetLineWidth(context, 1)
        CGContextSetLineDash(context, 0, [4, 10], 2)
        //        CGContextSetLineCap(context, .Round)
        
        //        CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor)
        CGContextSetStrokeColor(context, [0, 1, 0, 1])
        
        //5. 绘制
        CGContextStrokePath(context)
        
        //恢复到上次保存时的状态
        CGContextRestoreGState(context)
    }

上一篇下一篇

猜你喜欢

热点阅读