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(, , , )); //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.0,[[UIColor purpleColor]CGColor]); //3.添加矩形
CGContextAddRect(context, CGRectMake(, , , )); //4.设置绘图属性
[[UIColor redColor]setFill]; //填充色
[[UIColor blackColor]setStroke]; //描边 //5.画矩形
CGContextDrawPath(context, kCGPathEOFillStroke); //恢复旧的绘图上下文
CGContextRestoreGState(context);
}

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

      

iOS:quartz2D绘图(给图形绘制阴影)的更多相关文章

  1. HTML5 给图形绘制阴影(绘制五角星示例)

    几个属性 shadowOffsetX:阴影的横向位移量. shadowOffsetY:阴影的纵向位移量. shadowColor:阴影的颜色. shadowBlur:阴影的模糊范围. 属性说明 sha ...

  2. Canvas 给图形绘制阴影

    /** * 图形绘制阴影 */ function initDemo6() { var canvas = document.getElementById("demo6"); if ( ...

  3. Matlab绘图基础——图形绘制的插值  以及 图像大小的重采样

    使用说明:图形绘制时的插值 interp1   %1-D data interpolation interpft  %使用fft算法插值     %将原数据x转换到频率域,再逆转换回来更密集的数据采样 ...

  4. iOS:quartz2D绘图(显示绘制在PDF上的图片)

    quart2D既可以用来绘制图像到pdf上,也可以从pdf上读取图像并显示出来.在使用这种方式之前,还有一种方式可以用来读取显示pdf上的图像,即使用UIWebView网页视图控件- (void)lo ...

  5. iOS:quartz2D绘图 (动画)

    quartz2D可以用来绘制自己需要的图形,它们绘制出来的是一个静态的图形,那么如何绘制一个动态的图形呢?动态的图形就是动画,所谓动画,其实就是很多张图片在短时间内不停的切换所产生的一种视觉效果.qu ...

  6. Matlab绘图基础——图形绘制的插值

    interp1   %1-D data interpolation interpft  %使用fft算法插值     %将原数据x转换到频率域,再逆转换回来更密集的数据采样点 spline    %一 ...

  7. [html] 学习笔记-Canvas图形绘制处理

    使用Canvas API 可以将一个图形重叠绘制在另外一个图形上,也可以给图形添加阴影效果. 1.Canvas 图形组合 通过 globalCompositeOperation = 属性 来指定重叠效 ...

  8. iOS:quartz2D绘图(处理图像,绘制图像并添加水印)

    绘制图像既可以重写drawRect:方法并在该方法中绘制,也可以不用重写该方法,它有封装好的函数获取自己的图像绘制上下文,即UIGraphicsBeginImageContext(CGSize siz ...

  9. iOS学习——Quartz2D学习之UIKit绘制

    iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...

随机推荐

  1. 字符串aaaa......bbbb....ccc...dddddd用正则替换为abcd

    public static void main(String[] args) { String s = "aaaa......bbbb....ccc...dddddd"; Stri ...

  2. Dubbo 用户手册学习笔记 —— Dubbo架构

    Dubbo的架构 节点角色说明 节点 角色说明 Provider 服务提供方 Consumer 服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和调用时间的监 ...

  3. git在window与linux的换行符问题

    1:背景.我win7,后端是win10,使用了TortoiseGit工具.我使用ssh,他使用http.仓库是在linux,使用gitLab管理 2:问题.仓库是总监之前建好的.后端把文件add后pu ...

  4. Accord.NET入门

    0.序 园子里介绍Accord.NET的文章不少,但是具体讲如何使用的反而不多,可能跟.NET在机器学习领域应用不多有关.诚然,如果做项目的话,可能用Python更好一些,但是如果把了解Accord. ...

  5. SpringMVC组件配置

    web.xml . springmvc-servlet.xml 配置SpringMVC四大组件. web.xml 配置前端控制器:前端控制器就是个servlet <!-- 配置前端控制器 --& ...

  6. Mac OS X系统下的Android环境变量配置

    在Mac下开发Android,要想在终端利用命令行使用adb/android等命令时,需要配置一下环境变量. 步骤: 1.首先,假设你已经下载了Android SDK,解压后安装了adb.记住sdk文 ...

  7. 洛谷 P2947 [USACO09MAR]向右看齐Look Up【单调栈】

    题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1..N, are once again stan ...

  8. Bzoj2818 Gcd(莫比乌斯反演)

    题面 题意都在题目里面了 题解 你可以把题意看成这个东西 $$ \sum_{i=1}^n\sum_{j=1}^m\mathbf f(gcd(i,j)) $$ 其中$\mathbf f(n)$为$是否是 ...

  9. 北邮校赛 H. Black-white Tree (猜的)

    H. Black-white Tree 2017- BUPT Collegiate Programming Contest - sync 时间限制 1000 ms 内存限制 65536 KB 题目描述 ...

  10. Xamarin XAML语言教程模板页面TemplatedPage

    Xamarin XAML语言教程模板页面TemplatedPage 模板页面TemplatedPage 在上文中我们提到了TemplatedPage,它被称为模板页面,用来显示控件模版.Templat ...