ios 贝塞尔曲线 颜色填充_iOS贝塞尔曲线(UIBezierPath)的基本使用方法
简介
UIBezierPath是对Core Graphics框架的一个封装,使用UIBezierPath类我们可以画出圆形(弧线)或者多边形(比如:矩形)等形状,所以在画复杂图形的时候会经常用到。
分析
首先我们先看一下,UIBezierPath有哪些重要的属性:
1、 [color set]设置颜色,color为创建的UIColor对象
2、 [path stroke]填充view的线条的颜色,与[color set]配合使用 ,
3、 [path fill]填充整个view内部的颜色,与[color set]配合使用。
4、 path.lineWidth = 5.0; 这个很好理解了,就是划线的宽度
5、 path.lineCapStyle 这个线段起点是终点的样式,这个样式有三种:
kCGLineCapButt
kCGLineCapRound
kCGLineCapSquare
6、 path.lineJoinStyle 这个属性是用来设置两条线连结点的样式,同样它也有三种样式供我们选择
kCGLineJoinMiter 直接连接
kCGLineJoinRound 圆滑衔接
kCGLineJoinBevel 斜角连接
使用
接下来,我们就看一下UIBezierPath到底应该怎么使用:
首先,我们先自定义一个UIView的子类,然后重写- (void)drawRect:(CGRect)rect 方法,将创建图形的方法写到该方法中,下面是一些简单的示例:
画多边形
UIBezierPath* aPath = [UIBezierPath bezierPath];
aPath.lineWidth = 15.0;
/*
kCGLineCapButt,
kCGLineCapRound,
kCGLineCapSquare
*/
aPath.lineCapStyle = kCGLineCapButt ; //终点(起点)样式
/*
kCGLineJoinMiter,
kCGLineJoinRound,
kCGLineJoinBevel
*/
aPath.lineJoinStyle = kCGLineJoinBevel; //拐点样式
[aPath moveToPoint:CGPointMake(150, 30)];//设置起始点
[aPath addLineToPoint:CGPointMake(250, 70)];//途经点
[aPath addLineToPoint:CGPointMake(210, 170)];//途经点
[aPath addLineToPoint:CGPointMake(90, 170)];//途经点
[aPath addLineToPoint:CGPointMake(50, 70)];//途经点
[aPath closePath];//通过调用closePath方法得到最后一条线
UIColor *strokeColor = [UIColor redColor];
[strokeColor set];
[aPath stroke];//设置线条颜色
UIColor *fillColor = [UIColor blueColor];
[fillColor set];
[aPath fill];//填充
多边形.png
如果是创建四边形可直接使用:
UIBezierPath* aPath = [UIBezierPath bezierPathWithRect:CGRectMake(100, 100, 100, 100)];
画圆
UIBezierPath *aPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100, 100, 200, 100)];
aPath.lineWidth = 5.0;
aPath.lineCapStyle = kCGLineCapRound; //线条拐角
aPath.lineJoinStyle = kCGLineCapRound; //终点处理
UIColor *color = [UIColor redColor];
[color set];
[aPath stroke];
弧形.png
如果要画正圆,将rect的width和height设置为相等的值即可。
画弧形
/*
ArcCenter: 原点
radius: 半径
startAngle: 开始角度
endAngle: 结束角度
clockwise: 是否是顺时针方向
*/
UIBezierPath* aPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(200, 300)
radius:80
startAngle:0
endAngle:pi
clockwise:NO];
aPath.lineWidth = 5.0;
aPath.lineCapStyle = kCGLineCapRound; //线条拐角
aPath.lineJoinStyle = kCGLineCapRound; //终点处理
UIColor *color = [UIColor redColor];
[color set]; //设置线条颜色
[aPath stroke];
圆形.png
画二次曲线
UIBezierPath* aPath = [UIBezierPath bezierPath];
aPath.lineWidth = 5.0;
aPath.lineCapStyle = kCGLineCapRound; //线条拐角
aPath.lineJoinStyle = kCGLineCapRound; //终点处理
[aPath moveToPoint:CGPointMake(100, 100)];//设置初始点
//终点 controlPoint:切点(并不是拐弯处的高度,不懂的同学可以去看三角函数)
[aPath addQuadCurveToPoint:CGPointMake(200, 100) controlPoint:CGPointMake(150, 50)];
UIColor *color = [UIColor redColor];
[color set];
[aPath stroke];
二次曲线.png
画三次曲线
UIBezierPath *path2 = [UIBezierPath bezierPath];
path2.lineWidth = 5.0;
path2.lineCapStyle = kCGLineCapRound;
path2.lineJoinStyle = kCGLineJoinRound;
[path2 moveToPoint:CGPointMake(0, 100)];
[path2 addCurveToPoint:CGPointMake(100, 100) controlPoint1:CGPointMake(25, 50) controlPoint2:CGPointMake(75, 150)];//两个切点
UIColor *color = [UIColor redColor];
[color set];
[path2 stroke];
三次曲线.png
以上便是iOS中UIBezierPath最基本的使用方法了,在平时的开发中,我们经常将UIBezierPath与CALayer配合使用,下面是一个简单的例子:
//创建CAShapeLayer对象
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.frame = CGRectMake(100, 100, 200, 200);//设置shapeLayer的尺寸和位置
shapeLayer.fillColor = [UIColor clearColor].CGColor;//填充颜色为ClearColor
//设置线条的宽度和颜色
shapeLayer.lineWidth = 1.0f;
shapeLayer.strokeColor = [UIColor redColor].CGColor;
//创建一个圆形贝塞尔曲线
UIBezierPath *aPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 200, 200)];
//将贝塞尔曲线设置为CAShapeLayer的path
shapeLayer.path = aPath.CGPath;
//将shapeLayer添加到视图的layer上
[self.view.layer addSublayer:shapeLayer];
shapeLayer.png
总结:
到此为止,关于UIBezierPath最基本的使用就介绍完了,但是关于UIBezierPath在iOS中还有很多更加神奇的应用,有兴趣的同学可以研究一下。
ios 贝塞尔曲线 颜色填充_iOS贝塞尔曲线(UIBezierPath)的基本使用方法相关推荐
- ios 贝塞尔曲线 颜色填充_iOS,贝塞尔曲线(UIBezierPath)
UIBezierPath简介 使用UIBezierPath类可以创建基于矢量的路径,这个类在UIKit中.此类是Core Graphics框架关于path的一个封装, UIBezierPath对象是C ...
- ios 贝塞尔曲线 颜色填充_IOS 贝塞尔曲线(UIBezierPath)属性、方法整理
IOS 贝塞尔曲线详解 开发IOS的朋友都知道IOS 贝塞尔曲线的重要性,由于经常会用到这样的东西,索性抽时间就把相应所有的属性,方法做一个总结. UIBezierPath主要用来绘制矢量图形,它是基 ...
- ios 贝塞尔曲线 颜色填充_iOS UIBezierPath贝赛尔曲线详解
UIBezierPath是在画图,定制动画轨迹中都有应用. UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所 ...
- ios 贝塞尔曲线 颜色填充_PS的3D颜色深度映射到球体模拟天线
接着上次的→→EXCEL利用贝塞尔函数模拟天线3D方向图 一.用EXCEL尝试绘制成类似下面极坐标的方向图 还是先从2D入手 把X轴扩展到XY平面,先尝试用20×20个点来试一下 利用下面的代码批量单 ...
- ios重签名shell脚本_IOS应用重签名(三种方法)
终端命令(相关的一些指令) •$security find-identity -v -p codesigning列出钥匙串里可签名的证书 •$Codesign–fs"证书串"文件名 ...
- 【HTML 中的二次贝塞尔曲线 和三次贝塞尔曲线】(使用说明详解)
二次 贝塞尔曲线 和三次 贝塞尔曲线 使用说明 1. 二次 贝塞尔曲线 和三次 贝塞尔曲线 1.1 贝塞尔曲线的 基本知识 1.2 贝塞尔曲线 生成动图 1.3 HTML 中 画贝塞尔曲线的 2 种方 ...
- html5贝塞尔曲线,Canvas学习:贝塞尔曲线
在绘制圆和圆弧一节中,了解到在Canvas中可以使用arc()和arcTo()绘制制圆或弧线,但很多时候,仅这两个方法还不能满足我们实际的需求,特别是绘制复杂的曲线.不过值得庆幸的是,在Canvas中 ...
- Bézier曲线 和 Bézier曲面 ( 贝塞尔曲线 和 贝塞尔曲面 )
Bézier曲线 定义 给定空间n+1个点的位置矢量Pi(i=0,1,2-),则Bezier参数曲线上各点坐标的插值公式是:P(t)=∑i=0nPiBi,n(t),t∈[0,1]P(t)=\sum_{ ...
- android 贝塞尔曲线_OpenGL 实践之贝塞尔曲线绘制
说到贝塞尔曲线,大家肯定都不陌生,网上有很多关于介绍和理解贝塞尔曲线的优秀文章和动态图. 以下两个是比较经典的动图了. 二阶贝塞尔曲线: 三阶贝塞尔曲线: 由于在工作中经常要和贝塞尔曲线打交道,所以简 ...
最新文章
- Java 18 要来了,你不会还在用Java 8吧?
- 【数据库复习】第一章绪论
- cmd非运行完再保存,结果显示保存同时进行
- 201671010406 丁家辉《英文文本统计分析》结对项目报告
- internet网络 checksum校验和计算方法
- redis安装redis集群
- win7电脑更改不了分辨率的解决方法
- 十大“史上最佳”自动化测试工具
- vb6实现union数据结构_Redis数据结构与对象编码解析
- 设计模式(十四):适配器模式
- Python Sklearn.metrics 简介及应用示例(机器学习各种评价指标)
- 开博第一篇:一个关于正则表达式相关的问题
- java物业管理系统描述,基于java小区物业管理系统.doc
- STM32RBT6+RC522读取CPU卡demo
- 京东、京东全球购、考拉等电商平台入驻费用详解
- 2021/4/29刷题
- 接收输入的一行字符,统计出字符串包含数字的个数 2、编写一个程序,计算字符串中子串出现的次数 3、请输入星期几的第1个字母,用来判断是星期几,如果第1个字母一样,则继续判断第2个字母,依次类推。
- 解决 input 输入框在 iOS 系统中无法输入内容
- Java基础day2【谷】
- JQuery基础教程:入门
热门文章
- mysql的exp平方_MySQL EXP()用法及代码示例
- Python基础:获取迭代器下一项目的常见操作
- duilib消息事件产生和分发解释
- NFS服务器原理、搭建、配置
- 编译和使用APUE的源码
- Arthas 思维导图笔记
- linux下能运行python,(转)Linux下运行python
- C++学习之路 | PTA乙级—— 1019 数字黑洞 (20分)(精简)
- redis取出list最边的一个_六、Redis列表(list)类型参考记录(1)
- 外设驱动库开发笔记16:MS5536C压力变送器驱动