iOS:quartz2D绘图(给图形绘制阴影)

简介: quartz2D既可以绘制原始图形,也可以给原始图形绘制阴影。 绘制阴影时,需要的一些参数:上下文、阴影偏移量、阴影模糊系数 注意:在drawRect:方法中同时调用绘制同一个图形时,在对绘制的图形做绘制阴影处理前,需要先对上下文进行保存,绘制阴影成功后,还要对上下文进行复位,还原为最原始的上下文。

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);
}
复制代码

绘制的无颜色的阴影图形和有颜色的阴影图形截图为:

      

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类:  iOS高级

本文转自当天真遇到现实博客园博客,原文链接:本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4868469.html,如需转载请自行联系原作者,如需转载请自行联系原作者
相关文章
|
iOS开发
解决IOS端微信浏览器input,textarea有内上边框阴影
解决IOS端微信浏览器input,textarea有内上边框阴影
74 0
|
iOS开发
iOS 圆角和阴影并存的方法
圆角和阴影无法共存的原因就是因为这句代码。
475 0
|
iOS开发
iOS开发 - 设置阴影之你不知道的秘密
iOS开发 - 设置阴影之你不知道的秘密
372 0
|
iOS开发 MacOS
IOS之Quartz
IOS之Quartz
156 0
IOS之Quartz
|
iOS开发
iOS开发UI篇 - Quartz 2D简单使用
iOS开发UI篇 - Quartz 2D简单使用
iOS开发UI篇 - Quartz 2D简单使用
|
iOS开发
iOS给TabBar顶部黑线添加发光的阴影
iOS给TabBar顶部黑线添加发光的阴影
514 0
iOS给TabBar顶部黑线添加发光的阴影
|
iOS开发
iOS开发UI篇—Quartz2D(自定义UIImageView控件)
iOS开发UI篇—Quartz2D(自定义UIImageView控件) 一、实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义View。
809 0
|
iOS开发
iOS开发UI篇—Quartz2D使用(信纸条纹)
iOS开发UI篇—Quartz2D使用(信纸条纹) 一、前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺。 1 #import "YYViewController.
772 0
|
iOS开发
iOS开发UI篇—Quartz2D使用(截屏)
iOS开发UI篇—Quartz2D使用(截屏) 一、简单说明 在程序开发中,有时候需要截取屏幕上的某一块内容,比如捕鱼达人游戏。如图:   完成截屏功能的核心代码:- (void)renderInContext:(CGContextRef)ctx;调用某个view的layer的renderI...
828 0
|
iOS开发
iOS开发UI篇—Quartz2D简单使用(二)
iOS开发UI篇—Quartz2D简单使用(二) 一、画文字 代码: 1 // 2 // YYtextview.m 3 // 04-写文字 4 // 5 // Created by 孔医己 on 14-6-10.
694 0