iOS:quartz2D繪圖(給圖形繪制陰影)


quartz2D既可以繪制原始圖形,也可以給原始圖形繪制陰影。

繪制陰影時,需要的一些參數:上下文、陰影偏移量、陰影模糊系數

注意:在drawRect:方法中同時調用繪制同一個圖形時,在對繪制的圖形做繪制陰影處理前,需要先對上下文進行保存,繪制陰影成功后,還要對上下文進行復位,還原為最原始的上下文。目的是為了不影響后面的繪圖操作。

舉例的陰影繪制實例如下:

 

1、自定義一個視圖類DemoView,並將控制器的視圖關聯該自定義類,同時在該定義類中重寫- (void)drawRect:(CGRect)rect,將繪制無陰影圖形和繪制陰影圖形的調用方法寫在里面。

    

 

//繪制無陰影圖形和繪制陰影圖形的調用方法

- (void)drawRect:(CGRect)rect
{
     //畫圖形
     //1.獲取繪圖的上下文
     CGContextRef context = UIGraphicsGetCurrentContext();
    
     //畫帶陰影的矩形
     [self drawRectWithShadow:context];
    
     //畫不帶陰影的矩形
     [self drawRectWithNoShadow:context];
    
}

2、具體的繪制代碼如下:

// 繪制無陰影的矩形

#pragma mark -畫不帶陰影的矩形

-(void)drawRectWithNoShadow:(CGContextRef)context
{
    //3.添加矩形
    CGContextAddRect(context, CGRectMake(100, 300, 100, 100));
    
    
    //4.設置繪圖屬性
    [[UIColor redColor]setFill];      //填充色
    [[UIColor blackColor]setStroke];  //描邊
    
    
    //5.畫矩形
    CGContextDrawPath(context, kCGPathEOFillStroke);
}

 

繪制的無陰影矩形截圖為:

 

// 繪制帶陰影的矩形

#pragma mark -畫帶陰影的矩形(陰影分為:無顏色(默認的)、有顏色的(設置顏色))

-(void)drawRectWithShadow:(CGContextRef)context
{
    //保存舊的繪圖上下文
    CGContextSaveGState(context);
    
    //2.設置陰影(參數:上下文、陰影偏移量、陰影模糊系數)
    //不帶顏色的陰影
    //CGContextSetShadow(context, CGSizeMake(10, 10), 10.0);
    
    //帶顏色的陰影
    CGContextSetShadowWithColor(context, CGSizeMake(10, 10), 10.0,[[UIColor purpleColor]CGColor]);
    
    //3.添加矩形
    CGContextAddRect(context, CGRectMake(100, 100, 100, 100));
    
    
    //4.設置繪圖屬性
    [[UIColor redColor]setFill];      //填充色
    [[UIColor blackColor]setStroke];  //描邊
    
    
    //5.畫矩形
    CGContextDrawPath(context, kCGPathEOFillStroke);
    
    
    //恢復舊的繪圖上下文
    CGContextRestoreGState(context);
}

繪制的無顏色的陰影圖形和有顏色的陰影圖形截圖為:

      

 


免責聲明!

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



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