画图ii

作者: Dove_Q | 来源:发表于2016-08-21 15:47 被阅读13次
     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)
        }
    
    

    相关文章

      网友评论

          本文标题:画图ii

          本文链接:https://www.haomeiwen.com/subject/yxcwsttx.html