Quartz2D的簡單使用概述(一)-創(chuàng)新互聯

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

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

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

        1.獲取上下文

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        2.進行自定義做圖

        ...具體方法在后面單個舉例

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

        CGContextStrokePath(ctx);    //空心

        CGContextFillPath(ctx);       //實心

舉例1:畫直線

        //獲取上下文

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        //設置起止點

        CGContextMoveToPoint(ctx,20,100);         //起點

        CGContextAddLineToPoint(ctx,50,150);    //終點

        [[UIColor redColor] set];    //設置繪制的顏色

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

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

        //最關鍵的一步-----渲染

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

舉例2:畫三角形

        重復的方法這里不寫了,仍然是先獲取上下文,設置起點,第一個轉折點,終點,最后再回到起點即可。

        CGContextMoveToPoint(ctx,20,100);         //起點

    CGContextAddLineToPoint(ctx,100,100); //轉折點

        CGContextAddLineToPoint(ctx,50,150);    //終點

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

當然還有自帶的封閉方法可以調用:

        CGContextClosePath(ctx);                         //會自動將起點和終點連接起來

舉例3:畫矩形

        //專用方法

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

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

舉例4:畫圓形

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

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

        //參數要注意下:

        參數2和3:圓心坐標

        參數4:圓的半徑

        參數5:開始繪制的角度

        參數6:結束繪制的角度

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

        可以渲染成空心,也可以是實心

舉例5:畫橢圓

        //專用方法

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

        說明一下,這個方法既可以用來畫橢圓,也可以用來畫圓,寬高不同為橢圓,相同即為圓。

舉例5:畫圓弧

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

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

        //然后調用連接起止點的方法即可

        CGContextClosePath(ctx);

舉例6:畫餅形

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

        CGContextMoveToPoint(ctx,100,100);

        CGContextAddLineToPoint(ctx,100,150);

        // 畫圓

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

        //最后渲染即可

        這里要總結的說一點:所有的繪制過程必須寫在獲取上下文之后和渲染之前,這是標準的繪制過程。對于不同的需求,采取不同的渲染(空心和實心)。

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

本文標題:Quartz2D的簡單使用概述(一)-創(chuàng)新互聯
分享URL:http://www.muchs.cn/article14/cesjde.html

成都網站建設公司_創(chuàng)新互聯,為您提供手機網站建設、面包屑導航響應式網站、動態(tài)網站網站內鏈、移動網站建設

廣告

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

成都定制網站網頁設計