使用路徑(3)Quartz 2D

2021-07-02 20:43:57 字數 1545 閱讀 7207

借助cgcontextaddarctopoint()和cgcontextaddlinetopoint()函式可以非常容易地實現新增圓角矩形路徑的方法(所謂圓角矩形,就是在矩形的每個角都繪製一段90°的圓弧)。除此之外,還有cgcontextmovetopoint(cgcontextref c, cgfloat x, cgfloat y)函式用於把繪製點移動到指定位置,借助這些方法還可以繪製任意的多角星。

下面的程式**將會開發兩個自定義函式,乙個用於新增圓角矩形,乙個用於新增多角星。程式**如下。

程式清單:codes/12/12.2/pathtest/fkcontext.h

#ifndef pathtest_fkcontext_h  

#define pathtest_fkcontext_h  

/*  

該方法負責繪製圓角矩形。x1、y2:是圓角矩形左上角的座標;width、height:控制圓角矩行的寬、高;  

radius:控制圓角矩形的四個圓角的半徑  

*/  

void cgcontextaddroundrect(cgcontextref c, cgfloat x1 , cgfloat y1  

, cgfloat width , cgfloat height , cgfloat radius)  

/*  

該方法負責繪製多角星。n:該引數通常應設為奇數,控制繪製n角星。  

dx、dy:控制n角星的中心。size:控制n角星的大小  

*/  

void cgcontextaddstar(cgcontextref c , nsinteger n,   

cgfloat dx , cgfloat dy , nsinteger size)  

}  #endif 

上面兩個函式都沒有執行任何繪製操作,它們都只是向當前cgcontextref中新增路徑,第乙個函式用於新增乙個圓角矩形路徑,第二個函式用於新增乙個多角星路徑。

上面這個函式庫與專案無關,該函式庫中包含的兩個函式完全可以在任何專案中復用。因此,如果讀者以後的專案需要繪製圓角矩形、多角星,只要將該檔案複製到專案中,並匯入該函式庫,即可呼叫這兩個函式新增路徑。

例項:繪製任意多角星

下面是fkpathview類的實現**。

程式清單:codes/12/12.2/pathtest/fkpathview.m

#import "fkpathview.h"  

#import "fkcontext.h"  

@implementation fkpathview  

- (void)drawrect:(cgrect)rect  

@end 

上面程式的第一行粗體字**匯入了fkcontext.h檔案,接下來的粗體字**多次呼叫了cgcontextaddroundrect()函式和cgcontextaddstar()函式來新增圓角矩形和多角星。編譯、執行該程式,即可看到如圖12.9所示的效果。

Quartz 2D 簡單使用

想要在uiview內部繪製一下東西,需要自定義uiview,並且實現uiview的 void drawrect cgrect rect方法,為什麼需要實現drawrect 方法才能繪圖到 view 上,是因為在 drawrect 方法中才能取得跟 view 相關聯的圖形上下文,那麼什drawrect...

iOS 使用Quartz 2D畫線

畫虛線需要用到函式 cgcontextsetlinedash 此函式需要四個引數 cgcontextref context uigraphicsgetcurrentcontext cgcontextbeginpath context cgcontextsetlinewidth context,2.0...

Quartz 2D的簡單使用

quartz 2d的簡單使用 使用quartz 2d這個框架可以在uiview畫出我們自己想畫的圖形,而不用使用系統提供的控制項。但是在要實現這個效果要重寫uiview的 void drawrect cgrect rect方法 1.繪製簡單的線段 void drawrect cgrect rect ...