ios 繪制虛線 CGContextSetLineDash的使用


畫虛線需要用到函數:

CGContextSetLineDash

此函數需要四個參數:

  • context – 這個不用多說
  • phase - 稍后再說
  • lengths – 指明虛線是如何交替繪制,具體看例子
  • count – lengths數組的長度 
CGContextRef context =UIGraphicsGetCurrentContext();  
CGContextBeginPath(context);  
CGContextSetLineWidth(context, 2.0);  
CGContextSetStrokeColorWithColor(context, [UIColorwhiteColor].CGColor);  
float lengths[] = {10,10};  
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[] = {10,5};  
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,如此反復。

 原文:http://blog.csdn.net/zhouleizhao/article/details/38655761


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM