CoreGraphics 入門篇

引言:

  • UIKit依賴于Core Graphics框架,也是基于Core Graphics框架實現的
  • Core Graphics其實是一套基于C的API框架,使用了Quartz作為繪圖引擎。這也就意味著Core Graphics不是面向對象的
  • Core Graphics需要一個圖形上下文(Context),就是一張畫布
  • Core Graphics的圖形上下文(Context)是堆棧式的。只能在棧頂的上下文(畫布)上畫圖。

簡單的繪圖

獲取畫布

CGContextRef context = UIGraphicsGetCurrentContext();// 獲取上下文

畫筆相關:

//設置圖形上下文狀態屬性
    CGContextSetRGBStrokeColor(context, 1.0, 0, 0, 1);//設置筆觸顏色
    CGContextSetRGBFillColor(context, 0, 1.0, 0, 1);//設置填充色
    CGContextSetLineWidth(context, 2.0);//設置線條寬度
    CGContextSetLineCap(context, kCGLineCapRound);//設置頂點樣式
    CGContextSetLineJoin(context, kCGLineJoinRound);//設置連接點樣式
    CGFloat lengths[2] = { 18, 9 };
    CGContextSetLineDash(context, 0, lengths, 2);// 用于繪制虛線
    CGContextSetShadowWithColor(context, CGSizeMake(2, 2), 0, [UIColor blackColor].CGColor);// 設置陰影
    CGContextDrawPath(context, kCGPathFillStroke);//最后一個參數是填充類型

頂點指的是路徑的起始點和結束點,連接點指的是路徑中的轉折點(折現才有)

路徑相關

基礎:

  • CGPathAddLineToPoint 通過這個函數,能繪制復雜的折線
  • CGContextAddPath(context, path);通過這個函數,把路徑添加到上下文(畫布)中
CGPathMoveToPoint(path, nil, 20, 50);//移動到指定位置(設置路徑起點)
CGPathAddLineToPoint(path, nil, 20, 100);//繪制直線(從起始位置開始)
CGContextAddPath(context, path);// 添加進context之后,調用DrawPath繪制

相關的繪制:

CGContextAddLineToPoint();//繪制直線
CGContextAddCurveToPoint();//橢圓曲線
CGContextAddQuadCurveToPoint();//二次曲線
CGContextAddArcToPoint();//圓形曲線
CGContextClosePath();// 封閉路徑(起點終點會鏈接起來)

提供的封裝:

CGContextAddRect();//繪制矩形
CGContextAddRects();//畫多個矩形
CGContextAddLines();//畫多個線
CGContextAddEllipseInRect();//畫橢圓 
CGContextAddArc();//畫圓

繪制相關

CGContextDrawPath(context, kCGPathFillStroke);//最后一個參數是填充類型

釋放內存

//創建路徑
CGMutablePathRef path = CGPathCreateMutable();
// CGPathCreateMutable方法返回的路徑是一個Core Fundation Object。而這并不在ARC的管理范圍之內。所以需要手動釋放對象
 CGPathRelease(path);// 釋放

綜上所述,步驟如下:

  1. 獲取上下文(畫布)
  2. 創建路徑(自定義或者調用系統的API)并添加到上下文中。
  3. 進行繪圖內容的設置(畫筆顏色、粗細、填充區域顏色、陰影、連接點形狀等)
  4. 開始繪圖(CGContextDrawPath)
  5. 釋放路徑(CGPathRelease)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Core Graphics Framework是一套基于C的API框架,使用了Quartz作為繪圖引擎。它提供了低...
    ShanJiJi閱讀 1,598評論 0 20
  • --繪圖與濾鏡全面解析 概述 在iOS中可以很容易的開發出絢麗的界面效果,一方面得益于成功系統的設計,另一方面得益...
    韓七夏閱讀 2,791評論 2 10
  • 奧托在研究學習環境的創造過程,就“創新”的話題去到施樂的帕克研究中心,采訪了布萊恩?亞瑟。亞瑟的洞見推動了U理論研...
    韌性十足的牛皮糖閱讀 282評論 0 1
  • (一) 五月高高的山崗上 迎風而立 俯視人間萬里山河 你挺直的脊梁 是用四十多年的風風雨雨錘煉的劍 你凌厲的目光掠...
    金指尖的花園閱讀 345評論 0 7
  • 非常榮幸地迎來了自己的第四個教師節,在看到滿朋友圈的教師們都收到許多學生送來的禮物和祝福時,我也想祝福我的老師們。...
    顧秋水閱讀 428評論 1 0