iOS的绘图方法使用和参数的说明
来源:互联网 发布:twrp备份文件提取数据 编辑:程序博客网 时间:2024/06/06 00:04
前言
今天在给一个UIView添加背景图片的时候,其实完全可以用图片直接怼,简单方便便捷,我也喜欢这么弄,但是我想到时间还很充裕(就是UI那家伙没有给我图片,只能自己画),能不能使用系统的API画一个需要的图片呢,于是就查看了相关的资料,自己整理了一下。
iOS的的系统提供的有两套框架
1.UIBezierPath(贝赛尔曲线)
贝塞尔曲线其实就是Core Graphics的封装,用起来更加的顺手罢了,更容易理解含义
/**从rect的参数的类型根据矩形画线*/+ (instancetype)bezierPathWithRect:(CGRect)rect;
/** Oval(椭圆)内切矩形的正式椭圆 也可以是圆 前提rect的size的width和height相等*/+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
/** cornerRadius半径 矩形四个角圆弧画线*/+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius;
/** corners 某一个角画弧画线 typedef NS_OPTIONS(NSUInteger, UIRectCorner) { UIRectCornerTopLeft = 1 << 0, UIRectCornerTopRight = 1 << 1, UIRectCornerBottomLeft = 1 << 2, UIRectCornerBottomRight = 1 << 3, UIRectCornerAllCorners = ~0UL};*/+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
/** center 圆心坐标 radius 圆半径 startAngle 起始的弧度 当为零的时候,证明是从最右边开始的 系统自带了有弧度(M_PI表示半圆,M_PI_2就表示四分之一的圆) endAngle 结束的弧度 clockwise 逆时针(NO) 还是顺时针(yes)*/+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
/** CGPathRef 一个路径信息的结构体(很少用到)*/typedef const struct CGPath *CGPathRef;+ (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath;
上面都是静态方法直接画线,那必然有实例方法来画线
/** 利用一个坐标指定画图的初始坐标*/- (void)moveToPoint:(CGPoint)point
/** 下一个坐标与上一个坐标连在一起(必须有初始坐标 moveToPoint这个函数要先设置)*/- (void)addLineToPoint:(CGPoint)point;
/** 这个是三次的贝塞尔曲线 可以画出两个弧来 endPoint 终点坐标 controlPoint1 第一个基准点 controlPoint2 第二个基准点*/- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;
/** 这个是二次的贝塞尔曲线 可以画出一个弧来 endPoint 终点坐标 controlPoint1 第一个基准点 */- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
/** center 圆心坐标 radius 圆半径 startAngle 起始的弧度 当为零的时候,证明是从最右边开始的 系统自带了有弧度(M_PI表示半圆,M_PI_2就表示四分之一的圆) endAngle 结束的弧度 clockwise 逆时针(NO) 还是顺时针(yes)*/- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise NS_AVAILABLE_IOS(4_0);
2.Core Graphics
这是一个基于C封装的底层的API的接口,由于更底层的,所以它的功能更强大,很多时候我们愿意使用他们。
这是一个获取一个带三角的圆角的uiimage的对象
// 上下文的就是相当于画板,就是布置画线所需要的环境
1.UIGraphicsBeginImageContextWithOptions(size, NO, 0) 第一个方法就是设置图片的上下文
2.UIGraphicsGetCurrentContext() 获取当前上下文的
3. CGContextMoveToPoint 设置画图的起始坐标
4. CGContextAddLineToPoint 添加画图的坐标 连接上一个坐标
5. CGContextAddArc(contextRef, FONTW(13), FONTW(7.5), FONTW(7.5), M_PI, M_PI*1.5, 0); 画弧
6. CGContextClosePath(contextRef); 连接路径
7. [color setFill]; 画面的填充的颜色
8. UIGraphicsGetImageFromCurrentImageContext 获取当前的画板的图片的对象
9. UIGraphicsEndImageContext 结束图片的上下文本 恢复以前的环境
效果图如下
带三角的边框就是 其他的以后再介绍
- iOS的绘图方法使用和参数的说明
- 使用的iOS绘图方法
- iOS绘图API的使用
- ios UIBezierPath贝塞尔曲线的常用方法与参数说明
- iOS绘图-UIBezierPath的使用
- iOS-绘图(Quartz2D)的简单使用(原创)
- SeekBar的onProgressChanged方法的参数说明
- visio绘图的技巧说明
- iOS的绘图机制
- iOS的绘图机制
- iOS的绘图机制
- iOS 基本的绘图
- ios-绘图的方式
- Workbooks 对象的 Open 方法参数说明
- drawBitmapMesh方法关键参数的说明
- <Android>inflate的方法参数说明
- IOS多线程_GCD的简单使用和详细说明
- IOS多线程_GCD的简单使用和详细说明
- NKOJ 3762 守夜人 (并查集)
- Spark日志分析项目Demo(10) --JVM调优
- 深度残差网络原理理解
- 解决windows使用rsync同步到Linux权限问题
- Linux进阶之 Linux 目录结构
- iOS的绘图方法使用和参数的说明
- 获取数组有几元素
- JSP学习(二)------JSP基础知识详解
- python语言学习函数与变量作用域
- docker下的swagger-ui动态一个地址展示多个文档
- 导入文本内容到list control
- Swift版找字体名字
- 摘自windbg,当作调试taeget机器的hello word看吧
- PHP实现多图上传预览~(仿微信)