欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

瘋狂ios講義之使用路徑-創(chuàng)新互聯(lián)

正如前面提到的Quartz 2D只提供了繪制矩形、橢圓的函數(shù)并沒有直接提供繪制圓角矩形、三角形等幾何圖形的函數(shù)。為了繪制更復(fù)雜的圖形必須啟用路徑。

為章貢等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及章貢網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站制作、章貢網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

表12.4列出了Quartz 2D為創(chuàng)建路徑提供的函數(shù)。

表12.4創(chuàng)建路徑的相關(guān)函數(shù)

瘋狂ios講義之使用路徑

除此之外Quartz 2D還提供了如下函數(shù)來獲取當(dāng)前CGContextRef所包含的路徑信息。

bool CGContextIsPathEmpty(CGContextRef c)該函數(shù)用于判斷指定CGContextRef包含的路徑是否為空。

CGPoint CGContextGetPathCurrentPoint(CGContextRef c)該函數(shù)用于返回指定CGContextRef包含的路徑的當(dāng)前點(diǎn)。

CGRect CGContextGetPathBoundingBox(CGContextRef c)該函數(shù)用于返回指定CGContextRef中能完整包圍所有路徑的最小矩形。

bool CGContextPathContainsPoint(CGContextRef context, CGPoint point, CGPathDrawingMode mode)該函數(shù)判斷指定CGContextRef包含的路徑按指定繪制模式進(jìn)行繪制時(shí)是否需要繪制point點(diǎn)。

為了在Canvas中使用路徑可按如下步驟進(jìn)行。

調(diào)用CGContextBeginPath()函數(shù)開始定義路徑。

調(diào)用表12.4所示的各種函數(shù)添加子路徑。

如果路徑添加完成調(diào)用CGContextClosePath()函數(shù)關(guān)閉路徑。

調(diào)用CGContextDrawPath()、CGContextEOFillPath()、CGContextFillPath()或CGContextStrokePath()函數(shù)來填充路徑或繪制路徑邊框即可。在這些方法中第一個(gè)方法可以代替后面的幾個(gè)方法第一個(gè)方法指定使用特定的模式來繪制圖形它支持如下幾種繪制方式。

kCGPathFill指定填充路徑。相當(dāng)于CGContextFillPath()函數(shù)。

kCGPathEOFill指定采用even-odd模式填充路徑。相當(dāng)于CGContextEOFillPath()函數(shù)。

kCGPathStroke指定只繪制路徑。相當(dāng)于CGContextStrokePath()函數(shù)。

kCGPathFillStroke指定既繪制路徑也填充路徑。如果采用這種繪制方式必須使用該函數(shù)。

kCGPathEOFillStroke指定既繪制路徑也采用even-odd模式填充路徑。如果采用這種繪制方式必須使用該函數(shù)。

通過上面介紹的CGContextAddArc()函數(shù)我們可以繪制扇形下面的程序代碼使用循環(huán)繪制了10個(gè)扇形而且這10個(gè)扇形的透明度逐漸降低。首先創(chuàng)建一個(gè)Single View Application該Application包含一個(gè)應(yīng)用程序委托代理類、一個(gè)視圖控制器和配套的Storyboard界面設(shè)計(jì)文件。將該界面設(shè)計(jì)文件中大的View改為使用自定義的FKArcView類。該程序的控制器類幾乎無須修改只要重寫FKArcView的drawRect:方法在該方法中使用路徑繪制扇形即可。

下面是FKArcView類的實(shí)現(xiàn)代碼。

程序清單codes/12/12.2/AddArcTest/AddArcTest/FKArcView.m

瘋狂ios講義之使用路徑

面程序中的粗體字代碼繪制了從M_PI * 1.5角度12點(diǎn)方向開始到M_PI角度9點(diǎn)方向結(jié)束的扇形——在該繪圖API中0度代表X軸方向也就是3點(diǎn)方向。需要指出的是關(guān)于CGContextAddArc()函數(shù)的最后一個(gè)參數(shù)官方文檔介紹該參數(shù)為0代表逆時(shí)針但筆者運(yùn)行時(shí)看到的效果是0代表順指針可參見下面的運(yùn)行效果。

編譯、運(yùn)行該程序可以看到如圖12.7所示的效果。

瘋狂ios講義之使用路徑

從上面程序的運(yùn)行結(jié)果來看相信讀者對(duì)CGContextAddArc (CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)函數(shù)的用法已經(jīng)比較清楚該方法的第2、3個(gè)參數(shù)指定圓弧的圓心第4個(gè)參數(shù)用于設(shè)置圓弧的半徑第5、6個(gè)參數(shù)則用于設(shè)置圓弧的開始角度、結(jié)束角度最后一個(gè)參數(shù)用于設(shè)置是否順時(shí)針旋轉(zhuǎn)。

可能有讀者對(duì)CGContextAddArcToPoint(CGContextRef c, CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius)函數(shù)感到疑惑該方法也是添加一段圓弧路徑。確定這段圓弧的方式是假設(shè)從當(dāng)前點(diǎn)到P1x1、y1繪制一條線條再從 P1x1、y1到P2x2、y2繪制一條線條CGContextAddArcToPoint()則繪制一條同時(shí)與上面兩條線條相切且半徑為radius的圓弧。該函數(shù)方法的示意圖如圖12.8所示。

瘋狂ios講義之使用路徑

圖12.8CGContextAddArcToPoint()函數(shù)的示意

借助CGContextAddArcToPoint()和CGContextAddLineToPoint()函數(shù)可以非常容易地實(shí)現(xiàn)添加圓角矩形路徑的方法所謂圓角矩形就是在矩形的每個(gè)角都繪制一段90°的圓弧。除此之外還有CGContextMoveToPoint(CGContextRef c, CGFloat x, CGFloat y)函數(shù)用于把繪制點(diǎn)移動(dòng)到指定位置借助這些方法還可以繪制任意的多角星。

下面的程序代碼將會(huì)開發(fā)兩個(gè)自定義函數(shù)一個(gè)用于添加圓角矩形一個(gè)用于添加多角星。程序代碼如下。

程序清單codes/12/12.2/PathTest/FKContext.h

瘋狂ios講義之使用路徑

瘋狂ios講義之使用路徑

上面兩個(gè)函數(shù)都沒有執(zhí)行任何繪制操作它們都只是向當(dāng)前CGContextRef中添加路徑第一個(gè)函數(shù)用于添加一個(gè)圓角矩形路徑第二個(gè)函數(shù)用于添加一個(gè)多角星路徑。

上面這個(gè)函數(shù)庫與項(xiàng)目無關(guān)該函數(shù)庫中包含的兩個(gè)函數(shù)完全可以在任何項(xiàng)目中復(fù)用。因此如果讀者以后的項(xiàng)目需要繪制圓角矩形、多角星只要將該文件復(fù)制到項(xiàng)目中并導(dǎo)入該函數(shù)庫即可調(diào)用這兩個(gè)函數(shù)添加路徑。

瘋狂ios講義之使用路徑實(shí)例繪制任意多角星

下面創(chuàng)建一個(gè)應(yīng)用來繪制圓角矩形和多角星。首先創(chuàng)建一個(gè)Single View Application該Application包含一個(gè)應(yīng)用程序委托代理類、一個(gè)視圖控制器和配套的Storyboard界面設(shè)計(jì)文件。將該界面設(shè)計(jì)文件中大的View改為使用自定義的FKPathView類。該程序的控制器類幾乎無須修改只要重寫FKPathView的drawRect:方法在該方法中調(diào)用FKContext.h中的方法來添加圓角矩形、多角星路徑然后根據(jù)需要采用不同的方式繪制這些路徑即可。

下面是FKPathView類的實(shí)現(xiàn)代碼。

程序清單codes/12/12.2/PathTest/FKPathView.m

瘋狂ios講義之使用路徑

瘋狂ios講義之使用路徑

上面程序的第一行粗體字代碼導(dǎo)入了FKContext.h文件接下來的粗體字代碼多次調(diào)用了CGContextAddRoundRect()函數(shù)和CGContextAddStar()函數(shù)來添加圓角矩形和多角星。編譯、運(yùn)行該程序即可看到如圖12.9所示的效果。

瘋狂ios講義之使用路徑

————本文節(jié)選自《瘋狂ios講義上》

瘋狂ios講義之使用路徑

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享名稱:瘋狂ios講義之使用路徑-創(chuàng)新互聯(lián)
URL地址:http://chinadenli.net/article10/coghdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷服務(wù)器托管建站公司網(wǎng)頁設(shè)計(jì)公司搜索引擎優(yōu)化云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作