首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ios 图像处理

//奇偶规则填充(多条路径交叉时,奇数交叉填充,偶交叉不填充) kCGPathStroke,        // 只有边框  kCGPathFillStroke,    // 既有边框又有填充  kCGPathEOFillStroke...是UIBezierPath的一个只读属性,通常获取一个UIBezierPath对象的path可以给其他地方用比如上面例子中的 maskLayer.path = maskPath.CGPath; 创建并返回一个新的..., * 并给这个属性赋值, 当时设置了一个新的路径后, * 这个将会对你给出的路径对象进行 Copy 操作 */ currentPoint -> /**   * 该属性的值, 将会是下一条绘制的直线或曲线的起始点...  * 如果当前路径为空, 那么该属性的值将会是 CGPointZero   */ lineWidth -> /**   * 线宽属性定义了 `UIBezierPath` 对象中绘制的曲线规格....然而当我们 * 希望以最小的消耗去绘制一个临时的曲线时, 我们也许会临时增 * 大这个值, 来获得更快的渲染速度. */ usesEvenOddFillRule -> //是否使用基偶填充规则 /**

1.6K30

圆形进度条及计时功能

---- 画圆 用的贝塞尔曲线UIBezierPath来画,这个类支持画很多种形状,可以单独去尝试。...、绘制结束角度、顺时针方向。...如果画一个整圆,角度设为0,2pi即可。这里0度对应3点钟方向,我希望绘制从12点方向开始,设置起始角度为-0.5pi即可。结束角度就根据经过的时间和总的时间的比例进行角度计算。...---- 定时器 这里为了绘制看起来更连贯,我选择0.05秒刷新一次界面,而没有参考系统定时器的1秒刷新一次,这样看起来会更舒服。...为了解决这个问题,我先尝试了第一种方法,即返回两列滑轮,第二列只有一行:“分钟”,这样显示效果没问题,但第二列是可以拖动的,即有边界弹性效果,而且系统也没有提供关闭弹性效果的接口(btw:UIScrollView

2.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS CAShapeLayer和UIBezierPath的使用

    1.CAShapeLayer简介 CAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类。...使用CAShapeLayer与贝塞尔曲线可以画出你想要的图形。 相对于Core Graphics绘制图片,使用CAShapeLayer有以下一些优点: 渲染快速。...一个CAShapeLayer不需要像普通CALayer一样创建一个寄宿图形,所以无论有多大,都不会占用太多的内存。 不会被图层边界剪裁掉。一个CAShapeLayer可以在边界之外绘制。...(贝塞尔曲线扫盲) 贝塞尔曲线对应iOS中是UIBezierPath对象,它是CGPathRef数据类型的封装。path如果是基于矢量形状的,都用直线和曲线段去创建。...使用贝塞尔曲线画直线和椭圆形 代码如下: // 1,绘制一条直线 UIBezierPath * path = [[UIBezierPath alloc] init]; path.lineWidth

    2K30

    iOS学习——Quartz2D学习(1)

    他是一个二维的绘图引擎,同时支持iOS和Mac系统 2、Quartz2D能完成的工作   画基本线条,绘制文字,图片,截图,自定义UIView. 3、Quartz2D在开发中的价值   当我们的控件样式极其复杂时...(); //2.绘制路径 UIBezierPath *path = [UIBezierPath bezierPath];   //2.1设置起点 [path moveToPoint:CGPointMake...画曲线方法比较特殊需要一个控制点来决定曲线的弯曲程度.画曲线方法为: //先设置一个曲线的起点 [path moveToPoint:CGPointMake(10, 125)]; //再添加到个点到曲线的终点...在调用这些方法之前,我们要进行一些其他的任务去确保正确的绘制path,以及path的设置。 使用UIColor类的方法去stroke和fill想要的颜色。...首先要确定圆才能确定圆弧,圆孤它就圆上的一个角度嘛。还是使用UIBezierPath的自带的初始化方法。

    1.1K20

    绘图-UIBezierPath

    UIBezierPath是在 UIKit 中的一个类,继承于NSObject,可以创建基于矢量的路径.此类是Core Graphics框架关于path的一个OC封装。...所以 UIBezierPath 是基于 Core Graphics 实现的一项绘图技术。 使用此类可以定义常见的圆形、多边形等形状 。我们使用直线、弧(arc)来创建复杂的曲线形状。...每一个直线段或者曲线段的结束的地方是下一个的开始的地方。每一个连接的直线或者曲线段的集合成为subpath。一个UIBezierPath对象定义一个完整的路径包括一个或者多个subpaths。...下面我们看下, UIBezierPath类的头文件里定义的方法有哪些: UIBezierPath类头文件定义 + (instancetype)bezierPath; /** * 根据一个Rect 画一个椭圆曲线...要到达的坐标 */ - (void)addLineToPoint:(CGPoint)point; /** * 该方法就是画三次贝塞尔曲线的关键方法,以三个点画一段曲线,一般和moveToPoint

    1.3K20

    绘图-几个较复杂统计图案例的实现分析

    曲线动态图 曲线动图.gif 绘制关键步骤: 我们可以看到上图的动图是一组组合动画,共有四部分组成:坐标横竖虚线的动画、曲线的动态绘制、小圆点的动画、渐变区域的动画。...曲线动画 这部分的重点是使用 贝塞尔曲线的拼接曲线的方法: addCurveToPoint 三次贝塞尔曲线,需要两个控制点 addQuadCurveToPoint 二次贝塞尔曲线,需要一个控制点...关键是根据数值,计算出各个控制点,调用绘图方法绘制曲线路径。...UIBezierPath,把这个路径拼接上X坐标轴上的两个垂直投影点形成一个底部矩形状的封闭路径,把个路径作为渐变图层的path,并绘制一条比这个UIBezierPath顶部低一点的路径作为 渐变图层的遮罩图层...(4) 在弹性动画的执行期间,定时器会不断的获取某一时刻的所有的子视图的 坐标 ,并修改 曲线上的点的位置的坐标,并根据 currentLinePathForWave 这个方法绘制出 渐变图层的 mask

    1.5K20

    使用CAShapeLayer绘图

    按照之前的思路是创建一个UIView子类, 用UIBezierPath画一个外围的不闭合圆弧, 在画中间点圆 代码量不是很多弹也不少, 那假如用CAShapeLayer实现时怎么样子的呢?...UIBezierPath生成一个path,然后取他的CGPath来获取路径的。...重点是这里有一个初学者经常会犯的错误, 同学们在绘制曲线的时候经常会以layer在父图层中的相对位置去绘制曲线,这是错的!!! 应该以layer自身的坐标系划线。...别不当回事,你错的时候就知道咋回事了? 另外,如下图所示,整个圆形UIBezierPath其实是分为多个子路径绘制的 strokeEnd 是轮廓终点的属性,取值范围[0,1]。...请记住,在iOS中,以x轴正方向(即水平向右)为0度,顺时针旋转一周为360度。 下面我们再使用CAShapeLayer绘制一些特殊的形状 ?

    1.2K10

    iOS 自定义相机页面

    Layer加进去 - (void)drawRect:(CGRect)rect { //绘制一个遮罩 //贝塞尔曲线 画一个带有圆角的矩形 UIBezierPath *bpath...) cornerRadius:0]; //贝塞尔曲线 画一个矩形 [bpath appendPath:[[UIBezierPath bezierPathWithRoundedRect:CGRectMake...黑屏了 查了一些资料得知:当拍摄的图片正在绘制的时候,如果做了有关UIKit的图层操作,会造成黑屏。很明显,我在这里隐藏按钮是不行的,如果同时在绘制,就会黑屏。...[picker hiddenBtn];//拍照按钮隐藏 必须是拍照后隐藏,如果在拍照的同时隐藏那么会出现隐藏动画影响picker绘制问题,图片成像可能是黑色的。 我们回到界面的绘制上来。...在自定义相机页View中的drawRect方法中使用贝赛尔曲线绘制页面线条,例如四个角框: UIColor *color = kLineColor; [color set]; //设置线条颜色

    2.5K10

    iOS_UITableView性能优化

    https://github.com/johnil/VVeboTableViewDemo dispatch_async(DISPATCH_QUEUE_PRIORITY_DEFAULT, ^{ // 异步绘制...}); // 缓存一切可以缓存的 // 默认高度44 定高的cell最好指定高度, 减少不必要的计算 self.tabelView.rowHeight = 88; // 减少视图数目 // 减少多余的绘制操作...当中,相较于view的drawRect方法使用CPU渲染而言,其效率极高,能大大优化内存使用情况 // 优化方案2: 使用贝塞尔曲线UIBezierPath Core Graphics框架画出一个圆角...// 开始对imageView进行画图 UIGraphicsBeginImageContextWithOptions(imgV.bounds.size, NO, 1.0); // 使用 贝赛尔曲线 画出一个圆形图...layer渲染(Facebook开源的异步绘制框架AsyncDisplayKit) // 设置layer的opaque(不透明)值为YES,减少复杂图层合成 // 尽量使用不包含透明(alpha)通道的图片资源

    64420

    iOS动画三板斧(二)--CoreAnimation动画介绍使用附加

    1.UIBezierPath UIBezierPath主要是用来绘制路径的,分为一阶、二阶.....n阶。一阶是直线,二阶以上才是曲线。而最终路径的显示还是得依靠CALayer。...用CoreGraphics将路径绘制出来,最终也是绘制到CALayer上。 ? 贝塞尔曲线.png 方法一:构造bezierPath对象,一般用于自定义路径。...; // 绘制规则的贝塞尔曲线 - (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle...endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise // 绘制圆形曲线 - (void)appendPath:(UIBezierPath *)bezierPath...有三种方式:1、直接使用UIBezierPath的方法;2、使用CoreGraphics绘制;3、利用CAShapeLayer绘制。 示例代码如下,绘制一个右侧为弧型的视图: ?

    1.2K40

    挖一挖贝塞尔曲线那些事 原

    二、数学基础       平面上的任意连续曲线可以通过伯恩斯坦多项式来进行逼近拟合,因此,当我们想在平面中画一条曲线的时候,如果可以模拟出此曲线的函数,则可以十分精准的控制计算机来描绘一系列曲线上的点来绘制曲线...由于其公式为线性公式,所有这种贝塞尔曲线也被称为一阶贝塞尔曲线。下图可以很好的描述当t从0到1变化时,线段的绘制过程: ?...3.高阶贝塞尔曲线       有了一阶与二阶的基础,高阶贝塞尔曲线也是通过相同的方式来推导,一个通用的递推公式如下: ? 三阶和四阶的绘制过程演示如下: ?...这里主要列举UIKit框架中的UIBezierPath类。...- (void)fill; //进行路径绘制 - (void)stroke; 四、示例程序       下面是一个iOS平台的演示小Demo,使用它可以动态进行贝塞尔曲线的绘制并观察到辅助线与绘制过程

    52810

    OC绘制基本图形1. UIKit中封装了一些最常用的绘图方法2. 贝塞尔路径常用方法列表(BezierPath)3. 保存屏幕截图,并存储至相册

    好了,在之前的两篇文章里面写了Quartz2D的一些基本知识。从这篇开始写一下OC绘制基本图形的方法。 1....UIKit中封装了一些最常用的绘图方法 1.1 矩形 填充 UIRectFill(rect) 画线 UIRectFrame(rect) 1.2 字符串 绘制 [str drawInRect:rect...参数2:矩形圆角的半径 UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 80, 80...// 绘制方式二:从指定的点开始绘制。...保存屏幕截图,并存储至相册 开启一个图形的context。开启就别忘了关闭。 iOS8.0 以后还需要获得用户许可的权限。之前的iOS不需要。 在plist中设置申请用户许可时的提示文字。

    1.6K40

    思路和所用到的内容2. 辅助元素的创建(背景颜色、草坪、大地、小树、云彩)3. 雪山的实现4. 轨道的实现

    不过今天的内容稍微有点多,我呢尽量只说最重要的部分,这里面所有的内容都是通过代码绘制出来的。 实现后的效果图:(这也是为了简书抓图用的,不知道为啥现在如果是gif,简书不会当成文章的缩略图。...它是由三部分组成的,考虑到在最后我们会让过山车从右边进入,跑到左边去,我们就从最右侧开始画起。 最右侧有一个二次贝塞尔曲线,中间画了一个圆圈,左边是一个三次贝塞尔曲线。...Paste_Image.png 2,画一个圆圈。注意控制圆的半径以及圆心的位置。 ? Paste_Image.png 3,画最左边的那条曲线,一个三次贝塞尔曲线。其实就是有两个控制点的曲线。 ?...Paste_Image.png 4.3 代码实现 绿色轨道绘制部分的代码: // 绿色铁轨的火车从右侧进入,所以从右侧开始绘画。...需要画三条曲线,右边一条+中间的圆圈+左边一条 UIBezierPath *path = [[UIBezierPath alloc] init]; [path moveToPoint:CGPointMake

    1.7K50

    老司机带你走进Core Animation 之CAShapeLayer和CATextLayer

    之粒子发射、TileLayer与异步绘制 ---- 呐,老司机之前说过会来讲CALayer的,当然不会食言啦,今天就讲一些CALayer相关的吧。...挑几个讲一下吧: 1.path 可以看到,老司机这里用的是UIBezierPath生成一个path,然后取他的CGPath来获取路径的。他是什么呢?...是一层对CGPath的封装,他更符合OC面向对象的语法风格。这都不是重点,老司机并不想讲怎么使用UIBezierPath。...重点是这里有一个初学者经常会犯的错误,同学们在绘制曲线的时候经常会以layer在父图层中的相对位置去绘制曲线,这是错的!!!应该以layer自身的坐标系划线。...别不当回事,你错的时候就知道咋回事了另外,如下图所示,整个圆形UIBezierPath其实是分为多个子路径绘制的,这个特性在CAKeyframeAnimation中会有特殊的应用(可以回顾一下第一篇)。

    1.5K20

    高性能设置圆角,告别离屏渲染

    今天来写一个老生常谈的话题,也是一个面试的高频问题,我也在面试时不止一次被问到过这个问题——如何高性能的设置圆角。就用他作为2017年春节上班之后的第一篇文章。...这里我在稍微赘述一下离屏渲染的概念,什么是离屏渲染呢? 讨论造成离屏渲染的原因之前,先说明什么是离屏渲染:离屏渲染指的是在图像在绘制到当前屏幕前,需要先进行一次渲染,之后才绘制到当前屏幕。...在第一次渲染时,GPU(Core Animation)或CPU(Core Graphics)需要额外的一块内存来进行渲染,完成后再绘制到屏幕。...:cornerRadii]; UIBezierPath *backgroundRect = [UIBezierPath bezierPathWithRect:self.bounds];...,圆角路径直接用贝塞尔曲线绘制,而其中的属性,使用了runtime的黑魔法去设置,在Category 给一个现有的类添加属性,但是却不能添加实例变量,这似乎成为了 Objective-C的一个明显短板。

    96310

    Quartz2D复习(一)--- 基础知识 绘制线段圆弧 图片水印 截图

    1、Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统; Quart2D的API是纯C语言的,API来自于Core  Graphics框架: 2、Quartz 2D可以绘制图形(线段/三角形...其实,ios中大部分控件的内容都是通过Quart2D画出来的 4、图形上下文(GraphicsContext): 是一个CGContextRef类型的数据      图形上下文的作用:1)保存绘制信息、...绘图状态;                               2)决定绘制的输出目标(绘制到什么地方去:可以是pdf文件、图片或显示器的窗口上)      相同的一套绘图序列,指定不同的GraphicsContext...) drawRect: (CGRect)rect;  方法,然后在这个方法中,可以去的跟当前view相关联的图形上下文; 绘制相应的图形内容(绘制时产生的线条称为路径,路径由一个或多个线段或曲线段组成)...layer(图层)属性,drawRect: 方法中取得的是一个Layer  Graphics  Context, 因此,绘制的东西其实是绘制到view的layer上去了。

    2.6K10
    领券