201514月教程1期傳智ios至年45ui進階第06天quartz2d_第1頁
201514月教程1期傳智ios至年45ui進階第06天quartz2d_第2頁
201514月教程1期傳智ios至年45ui進階第06天quartz2d_第3頁
201514月教程1期傳智ios至年45ui進階第06天quartz2d_第4頁
201514月教程1期傳智ios至年45ui進階第06天quartz2d_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Quartz2D傳智.司空摘星0?ππ3/2π0-3/2π-π-1/2π掌握drawRect:方法的使用常見圖形的繪制:線條、多邊形、圓繪圖狀態(tài)的設(shè)置:文字顏色、線寬等圖形上下文狀態(tài)的保存與恢復(fù)圖形上下文棧ViewCGContextRef畫圖狀態(tài):線寬:10

顏色:紅色繪圖狀態(tài)棧

畫圖狀態(tài):線寬:1

顏色:黑色tradiustopmiddeHeightRadius什么是Quartz2DQuartz2D是一個二維繪圖引擎,同時支持iOS和Mac系統(tǒng)Quartz

2D能完成的工作繪制圖形:線條\三角形\矩形\圓\弧等繪制文字繪制\生成圖片(圖像)讀取\生成PDF截圖\裁剪圖片自定義UI控件…

…Quartz2D實例Quartz2D能做很多強大的事情,例如裁剪圖片圓形裁剪Quartz2D實例涂鴉\畫板Quartz2D實例手勢解鎖Quartz2D在iOS開發(fā)中的價值為了便于搭建美觀的UI界面,iOS提供了UIKit框架,里面有各種各樣的UI控件UILabel:顯示文字UIImageView:顯示圖片UIButton:同時顯示圖片和文字(能點擊)…

…利用UIKit框架提供的控件,拼拼湊湊,能搭建和現(xiàn)實一些簡單、常見的UI界面但是,有些UI界面極其復(fù)雜、而且比較個性化,用普通的UI控件無法實現(xiàn),這時可以利用Quartz2D技術(shù)將控件內(nèi)部的結(jié)構(gòu)畫出來,自定義控件的樣子其實,iOS中大部分控件的內(nèi)容都是通過Quartz2D畫出來的因此,Quartz2D在iOS開發(fā)中很重要的一個價值是:自定義view(自定義UI控件)圖形上下文圖形上下文(Graphics

Context):是一個CGContextRef類型的數(shù)據(jù)圖形上下文的作用保存繪圖信息、繪圖狀態(tài)決定繪制的輸出目標(繪制到什么地方去?)(輸出目標可以是PDF文件、Bitmap或者顯示器的窗口上)相同的一套繪圖序列,指定不同的GraphicsContext,就可將相同的圖像繪制到不同的目標上繪制好的圖形圖形上下文保存輸出目標顯示100,30130,10030,100上下文繪圖狀態(tài):顏色:red線寬:3棧繪圖狀態(tài):顏色:black線寬:1繪圖狀態(tài):顏色:black線寬:1圖形上下文Quartz2D提供了以下幾種類型的GraphicsContext:Bitmap

GraphicsContextPDF

GraphicsContextWindow

GraphicsContextLayer

GraphicsContextPrinter

GraphicsContext自定義view如何利用Quartz2D自定義view?(自定義UI控件)如何利用Quartz2D繪制東西到view上?首先,得有圖形上下文,因為它能保存繪圖信息,并且決定著繪制到什么地方去其次,那個圖形上下文必須跟view相關(guān)聯(lián),才能將內(nèi)容繪制到view上面自定義view的步驟新建一個類,繼承自UIView實現(xiàn)-(void)drawRect:(CGRect)rect方法,然后在這個方法中取得跟當前view相關(guān)聯(lián)的圖形上下文繪制相應(yīng)的圖形內(nèi)容利用圖形上下文將繪制的所有內(nèi)容渲染顯示到view上面drawRect:為什么要實現(xiàn)drawRect:方法才能繪圖到view上?因為在drawRect:方法中才能取得跟view相關(guān)聯(lián)的圖形上下文drawRect:方法在什么時候被調(diào)用?當view第一次顯示到屏幕上時(被加到UIWindow上顯示出來)調(diào)用view的setNeedsDisplay或者setNeedsDisplayInRect:時繪圖順序Quartz2D須知Quartz2D的API是純C語言的Quartz2D的API來自于Core

Graphics框架數(shù)據(jù)類型和函數(shù)基本都以CG作為前綴CGContextRefCGPathRefCGContextStrokePath(ctx);……drawRect:中取得的上下文在drawRect:方法中取得上下文后,就可以繪制東西到view上View內(nèi)部有個layer(圖層)屬性,drawRect:方法中取得的是一個Layer

Graphics

Context,因此,繪制的東西其實是繪制到view的layer上去了View之所以能顯示東西,完全是因為它內(nèi)部的layerQuartz2D繪圖的代碼步驟獲得圖形上下文CGContextRefctx=UIGraphicsGetCurrentContext();拼接路徑(下面代碼是搞一條線段)CGContextMoveToPoint(ctx,10,10);CGContextAddLineToPoint(ctx,100,100);繪制路徑CGContextStrokePath(ctx);

//CGContextFillPath(ctx);常用拼接路徑函數(shù)新建一個起點void

CGContextMoveToPoint(CGContextRefc,CGFloatx,CGFloaty)添加新的線段到某個點void

CGContextAddLineToPoint(CGContextRefc,CGFloatx,CGFloaty)添加一個矩形void

CGContextAddRect(CGContextRefc,CGRectrect)添加一個橢圓void

CGContextAddEllipseInRect(CGContextRefcontext,CGRectrect)添加一個圓弧void

CGContextAddArc(CGContextRefc,CGFloatx,CGFloaty,

CGFloatradius,CGFloatstartAngle,CGFloatendAngle,intclockwise)常用繪制路徑函數(shù)Mode參數(shù)決定繪制的模式void

CGContextDrawPath(CGContextRefc,CGPathDrawingModemode)繪制空心路徑void

CGContextStrokePath(CGContextRefc)繪制實心路徑void

CGContextFillPath(CGContextRefc)提示:一般以CGContextDraw、CGContextStroke、CGContextFill開頭的函數(shù),都是用來繪制路徑的圖形上下文棧的操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論