iOS 使用Quartz 2D畫虛線

2022-08-01 10:21:11 字數 2878 閱讀 5312

畫虛線需要用到函式:

cgcontextsetlinedash

此函式需要四個引數:

[cpp]view plain

copy

print

?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);  

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引數表示在第乙個虛線繪製的時候跳過多少個點,舉例說明:

[cpp]view plain

copy

print

?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);   

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,如此反覆。

iOS 使用Quartz 2D畫線

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

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 列...