Quartz2D的簡(jiǎn)單使用概述(一)-創(chuàng)新互聯(lián)

    很久沒(méi)有更新博文,今天把之前就想研究的quartz2D看了下,了解了些簡(jiǎn)單的作畫方法,趕緊記錄下來(lái)。學(xué)習(xí)Quartz2D的主要目的是為了以后更加方便的自定義一些界面控件時(shí)用到,畢竟大部分app都有個(gè)性化的定制界面。以下紀(jì)錄一些常用的簡(jiǎn)單作圖方法。

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括沙灣網(wǎng)站建設(shè)、沙灣網(wǎng)站制作、沙灣網(wǎng)頁(yè)制作以及沙灣網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,沙灣網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到沙灣省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

    想要自定義的控件基本都是繼承自UIView,然后重寫其drawRect方法。Quartz2D的方法都是純c的,所有通用的步驟都是先獲取上下文,然后再進(jìn)行內(nèi)部自定義,最后渲染,而且它的自帶函數(shù)多半都是CGContext開(kāi)頭的:

        1.獲取上下文

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        2.進(jìn)行自定義做圖

        ...具體方法在后面單個(gè)舉例

        3.渲染(針對(duì)不同情況,進(jìn)行不同的渲染)

        CGContextStrokePath(ctx);    //空心

        CGContextFillPath(ctx);       //實(shí)心

舉例1:畫直線

        //獲取上下文

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        //設(shè)置起止點(diǎn)

        CGContextMoveToPoint(ctx,20,100);         //起點(diǎn)

        CGContextAddLineToPoint(ctx,50,150);    //終點(diǎn)

        [[UIColor redColor] set];    //設(shè)置繪制的顏色

         CGContextSetLineCap(ctx,kCGLineCapRound);    //起止點(diǎn)的樣式(圓形)

        CGContextSetLineJoin(ctx,kCGLineJoinRound);    //轉(zhuǎn)角點(diǎn)的樣式(圓形)

        //最關(guān)鍵的一步-----渲染

        CGContextStrokePath(ctx);    //要注意,線條不要渲染為實(shí)心的

舉例2:畫三角形

        重復(fù)的方法這里不寫了,仍然是先獲取上下文,設(shè)置起點(diǎn),第一個(gè)轉(zhuǎn)折點(diǎn),終點(diǎn),最后再回到起點(diǎn)即可。

        CGContextMoveToPoint(ctx,20,100);         //起點(diǎn)

    CGContextAddLineToPoint(ctx,100,100); //轉(zhuǎn)折點(diǎn)

        CGContextAddLineToPoint(ctx,50,150);    //終點(diǎn)

        CGContextAddLineToPoint(ctx,20,100);   //回到起點(diǎn)

當(dāng)然還有自帶的封閉方法可以調(diào)用:

        CGContextClosePath(ctx);                         //會(huì)自動(dòng)將起點(diǎn)和終點(diǎn)連接起來(lái)

舉例3:畫矩形

        //專用方法

        CGContextAddRect(ctx,CGRectMake(100,100,100,80));

        然后設(shè)置一些基本的屬性后就可以渲染了,既可以渲染成空心,也可以是實(shí)心

舉例4:畫圓形

        //專用方法(其實(shí)也是畫橢圓的方法)

        CGCoontextAddArc(ctx,100,100,50,0,2*M_Pi,0);

        //參數(shù)要注意下:

        參數(shù)2和3:圓心坐標(biāo)

        參數(shù)4:圓的半徑

        參數(shù)5:開(kāi)始繪制的角度

        參數(shù)6:結(jié)束繪制的角度

        參數(shù)7:繪制的方向(0順時(shí)針,1逆時(shí)針)

        可以渲染成空心,也可以是實(shí)心

舉例5:畫橢圓

        //專用方法

        CGContextAddEllipseInRect(ctx,CGRectMake(100,100,50,60));

        說(shuō)明一下,這個(gè)方法既可以用來(lái)畫橢圓,也可以用來(lái)畫圓,寬高不同為橢圓,相同即為圓。

舉例5:畫圓弧

        //這里使用的是畫圓的方法

        CGCoontextAddArc(ctx,100,100,50,M_Pi_2,M_Pi,0);

        //然后調(diào)用連接起止點(diǎn)的方法即可

        CGContextClosePath(ctx);

舉例6:畫餅形

        //畫餅形要先畫一條直線,然后使用這條直線的長(zhǎng)度畫圓即可

        CGContextMoveToPoint(ctx,100,100);

        CGContextAddLineToPoint(ctx,100,150);

        // 畫圓

        CGCoontextAddArc(ctx,100,100,50,M_Pi_2,M_Pi,0);

        //最后渲染即可

        這里要總結(jié)的說(shuō)一點(diǎn):所有的繪制過(guò)程必須寫在獲取上下文之后和渲染之前,這是標(biāo)準(zhǔn)的繪制過(guò)程。對(duì)于不同的需求,采取不同的渲染(空心和實(shí)心)。

另外有需要云服務(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ù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:Quartz2D的簡(jiǎn)單使用概述(一)-創(chuàng)新互聯(lián)
分享URL:http://www.bm7419.com/article14/cesjde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)面包屑導(dǎo)航、響應(yīng)式網(wǎng)站、動(dòng)態(tài)網(wǎng)站網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)

廣告

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

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)