畫圖ii

 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])
        //非零環(huán)繞數(shù)
        //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
        }
        
        //保存當前的上下文狀態(tài)
        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)
        
        //恢復到上次保存時的狀態(tài)
        CGContextRestoreGState(context)
    }

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容