欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

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

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

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

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

瘋狂ios講義之使用路徑

除此之外Quartz 2D還提供了如下函數(shù)來(lái)獲取當(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ù)開(kāi)始定義路徑。

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

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

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

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

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

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

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

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

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

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

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

瘋狂ios講義之使用路徑

面程序中的粗體字代碼繪制了從M_PI * 1.5角度12點(diǎn)方向開(kāi)始到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代表順指針可參見(jiàn)下面的運(yùn)行效果。

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

瘋狂ios講義之使用路徑

從上面程序的運(yùn)行結(jié)果來(lái)看相信讀者對(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è)置圓弧的開(kāi)始角度、結(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繪制一條線條再?gòu)?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ì)開(kāi)發(fā)兩個(gè)自定義函數(shù)一個(gè)用于添加圓角矩形一個(gè)用于添加多角星。程序代碼如下。

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

瘋狂ios講義之使用路徑

瘋狂ios講義之使用路徑

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

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

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

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

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

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

瘋狂ios講義之使用路徑

瘋狂ios講義之使用路徑

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

瘋狂ios講義之使用路徑

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

瘋狂ios講義之使用路徑

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

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

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

廣告

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

外貿(mào)網(wǎng)站制作
日本在线免费观看91| 日韩一区二区免费看视频| 黑人精品少妇一区二区三区| 国产成人亚洲精品在线看| 国产亚洲美女在线视频视频| 综合国产精品久久久久久| 亚洲av日韩av高潮| 国产亚洲一区二区精品| 嫩草网站国产精品一区二| 激情国产白嫩美女在线观看| 99久久精品国产熟女| 久久久久久狠狠亚洲综合| 日韩一区二区三区91| 九九视频在线观看免费专区 | 国产精品黄色片在线观看| 亚洲精品午夜久久久av| 91桃色午夜福利视频| 国产三级精品三级在线专区1| 亚洲国产日韩欧美视频| 亚洲伦理第一页中文字幕| 亚洲国产精品一区二区三区| 国产精品亚洲在线视频| 色哟哟视频免费在线观看| 精品少妇人妻av不卡久久| 色吊丝日韩在线观看| 色男人天堂网在线视频| 久久久久久精品国产av| 国产女人高潮流白丝视频| 亚洲一区二区三区日本久久| 国产亚洲精品一区在线| 国产精品一区二区久久| 国产一区二区三区性色| 视频一二区免费在线观看| 亚洲精品一区二区牛仔裤| 欧美口爆吞精在线观看| 久久中文字幕一区二区三区| 风韵犹存丰满大屁股熟妇| 五月婷婷六月丁香免费视频| 婷婷五五月深爱开心激情| 亚洲图文一区二区三区四区 | 日韩成人在线视频中文字幕|