iOS 使用Quartz 2D畫線

2021-06-26 13:07:58 字數 3569 閱讀 7659

畫虛線需要用到函式:

cgcontextsetlinedash

此函式需要四個引數:

cgcontextref context =uigraphicsgetcurrentcontext();  

cgcontextbeginpath(context);  

cgcontextsetlinewidth(context, 2.0);  

cgcontextsetstrokecolorwithcolor(context, [uicolorwhitecolor].cgcolor);  

float

lengths = ;  

cgcontextsetlinedash(context, 0, lengths,2);  

cgcontextmovetopoint(context, 10.0, 20.0);  

cgcontextaddlinetopoint(context, 310.0,20.0);  

cgcontextstrokepath(context);  

cgcontextclosepath(context);  

lengths的值{10,10}表示先繪製10個點,再跳過10個點,如此反覆,如圖:

如果把lengths值改為{10, 20, 10},則表示先繪製10個點,跳過20個點,繪製10個點,跳過10個點,再繪製20個點,如此反覆,如圖:

注意count的值等於lengths陣列的長度

phase引數表示在第乙個虛線繪製的時候跳過多少個點,舉例說明:

float

lengths = ;  

cgcontextsetlinedash(context, 0, lengths, 2);    

cgcontextmovetopoint(context, 0.0, 20.0);    

cgcontextaddlinetopoint(context, 310.0, 20.0);     

cgcontextstrokepath(context);  

cgcontextsetlinedash(context, 5, lengths, 2);  

cgcontextmovetopoint(context, 0.0, 40.0);    

cgcontextaddlinetopoint(context, 310.0, 40.0);  

cgcontextstrokepath(context);             

cgcontextsetlinedash(context, 8, lengths, 2);     

cgcontextmovetopoint(context, 0.0, 60.0);             

cgcontextaddlinetopoint(context, 310.0, 60.);             

cgcontextstrokepath(context);   

如圖顯示:

由於lengths值為{10,5},第一條線就是繪製10,跳過5,反覆繪製。

第二條線的phase值為5,則首先繪製【10減去5】,再跳過5,繪製10,反覆繪製。

第三條給也如此,先繪製2,再跳過5,如此反覆。

1.image中畫線方法
- (void

)viewdidload

2.獲取當前context畫線方法:(未主動建立path)

cgcontextrefctx = uigraphicsgetcurrentcontext();//獲取當前ctx

cgcontextsetlinecap(uigraphicsgetcurrentcontext(), kcglinecapround);

cgcontextsetlinewidth(ctx, 15.0);  //

線寬cgcontextsetallowsantialiasing(ctx,

yes);

cgcontextsetrgbstrokecolor(ctx, 1.0, 0.0, 0.0, 1.0);  //

顏色cgcontextbeginpath(ctx);

cgcontextmovetopoint(ctx, 100, 100);  //

起點座標

cgcontextaddlinetopoint(ctx, 200, 100);   //

終點座標

cgcontextstrokepath(ctx);

其他畫線:

//畫兩條射線

// 建立乙個path控制代碼

cgmutablepathrefpathref = cgpathcreatemutable();

// 初始化該path到乙個初始點

cgpathmovetopoint(pathref, &cgaffinetransformidentity, 100.0f, 0.0f);

// 新增一條直線,從初始點到該函式指定的座標點

cgpathaddlinetopoint(pathref, &cgaffinetransformidentity, 150.0f, 100.0f);

cgpathmovetopoint(pathref, &cgaffinetransformidentity, 100.0f, 0.0f);

cgpathaddlinetopoint(pathref, &cgaffinetransformidentity, 100.0f, 150.0f);

cgpathclosesubpath(pathref);

// 關閉該path

cgpathclosesubpath(pathref);

// 將此path新增到quartz上下文中

cgcontextaddpath(ctx, pathref);

// 對上下文進行描邊

cgcontextstrokepath(ctx);

//畫三角形

//cgmutablepathref pathref = cgpathcreatemutable();

// 初始化該path到乙個初始點

cgpathmovetopoint(pathref, &cgaffinetransformidentity, 0.0f, 0.0f);

// 新增一條直線,從初始點到該函式指定的座標點

cgpathaddlinetopoint(pathref, &cgaffinetransformidentity, 50.0f, 100.0f);

cgpathaddlinetopoint(pathref, &cgaffinetransformidentity, 100.0f, 50.0f);

// 關閉該path

cgpathclosesubpath(pathref);

// 關閉該path

cgpathclosesubpath(pathref);

// 將此path新增到quartz上下文中

cgcontextaddpath(ctx, pathref);

// 對上下文進行描邊

cgcontextstrokepath(ctx);

iOS 使用Quartz 2D畫虛線

畫虛線需要用到函式 cgcontextsetlinedash 此函式需要四個引數 cpp view plain copy print cgcontextref context uigraphicsgetcurrentcontext cgcontextbeginpath context cgconte...

Quartz 2D 簡單使用

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

iOS上使用Quartz 2D繪製Bitmap

quartz 2d是乙個二維繪圖引擎,可以在ios和mac os x中使用 不包括核心 quartz中所有物件都被繪製到圖形上下文中,包括位圖圖形上下文 cgbitmapcontext pdf圖形上下文 cgpdfcontext 視窗圖形上下文 僅mac os x可用 分層上下文 cglayer 列...