您好,登錄后才能下訂單哦!
很久沒有更新博文,今天把之前就想研究的quartz2D看了下,了解了些簡單的作畫方法,趕緊記錄下來。學習Quartz2D的主要目的是為了以后更加方便的自定義一些界面控件時用到,畢竟大部分app都有個性化的定制界面。以下紀錄一些常用的簡單作圖方法。
想要自定義的控件基本都是繼承自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);
//最后渲染即可
這里要總結的說一點:所有的繪制過程必須寫在獲取上下文之后和渲染之前,這是標準的繪制過程。對于不同的需求,采取不同的渲染(空心和實心)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。