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

如何从CGPath获取封闭的子路径

从CGPath获取封闭的子路径的方法是通过使用CGPathApply函数来遍历路径中的所有元素,并将其分解为子路径。以下是一个示例代码,展示了如何实现这一过程:

代码语言:txt
复制
// 定义一个数组来存储子路径
var subpaths = [CGPath]()

// 定义一个回调函数来处理路径元素
let callback: CGPathApplierFunction = { (info, element) in
    // 获取当前路径元素的类型
    let type = element.pointee.type
    
    // 如果是移动到新点的元素,则创建一个新的子路径
    if type == .moveToPoint {
        let subpath = CGMutablePath()
        subpath.move(to: element.pointee.points[0])
        subpaths.append(subpath)
    }
    
    // 如果是添加线段或曲线的元素,则将点添加到当前子路径中
    if type == .addLineToPoint || type == .addQuadCurveToPoint || type == .addCurveToPoint {
        let subpath = subpaths.last
        subpath?.addLine(to: element.pointee.points[0])
    }
    
    // 如果是关闭子路径的元素,则关闭当前子路径
    if type == .closeSubpath {
        let subpath = subpaths.last
        subpath?.closeSubpath()
    }
}

// 应用回调函数来遍历路径中的元素
CGPathApply(path, nil, callback)

// 现在,subpaths数组中存储了所有封闭的子路径

这个方法可以用于从一个复杂的路径中提取出多个封闭的子路径。这在许多图形处理和绘图应用中非常有用,例如计算路径的长度、计算路径的包围盒、路径的填充和描边等。

腾讯云提供了一系列云计算相关的产品和服务,其中包括云服务器、云数据库、云存储、人工智能、物联网等。您可以根据具体的需求选择适合的产品和服务。更多关于腾讯云的产品和服务信息,请访问腾讯云官方网站:腾讯云

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python subprocess运行进程中实时获取输出

起因是这样,c++程序开发后 功能号和指令,校验需要人工去看对照二进制代码,量大还费力, 于是打算利用python 去调用 c++程序去校验指令, 首先要做就是用python 获取c++程序...printf() 或cout 输出; 环境linux python 3.8.x 以下代码实现,获取子程序输出 command='....linux shell指令,如果要用shell 指令如ls 要将false 变成true, 通过指定stderr=subprocess.STDOUT,将子程序标准错误输出重定向到了标准输出,以使我们可以直接标准输出中同时获取标准输出和标准错误信息...p.poll() 返回进程返回值,如果为None 表示 c++进程还未结束. p.stdout.readline() c++标准输出里获取一行....参考文章1 python中subprocess.Popen()使用 参考文章 2 python subprocess运行进程中实时获取输出

10.4K10

ios 图像处理

一个只读属性,通常获取一个UIBezierPath对象path可以给其他地方用比如上面例子中 maskLayer.path = maskPath.CGPath; 创建并返回一个新BezierPath...UIBezierPath属性 CGPath -> /** * 获取这个属性, 你将会获得一个不可变 CGPathRef 对象, * 他可以传入 CoreGraphics 提供函数中 * 你可以是用...然后我们对每一条和该射线相交路径进行统计, 统计规则是这样: 当路径右向左穿过射线时候, count++, 当路径左向右穿过射线时候, count--....phase:(CGFloat *)phase; -> // 重新获取虚线模式 /**   * 该方法当前填充颜色 和 绘图属性对路径封闭区域进行填充...param blendMode: 混合模式决定了如何和已经存在被渲染过内容进行合成   * @param alpha: 填充路径透明度   */ - (void)strokeWithBlendMode

1.6K30
  • 如何获取当前正在执行脚本绝对路径

    # get path to scripts scripts_dir=`dirname $0` 刚开始我还以为需要把dirname改成对应路径,同时又不解$0在这里是表达什么含义。.../bin/bash cd `dirname $0` echo `pwd` 切到/home/zwang/1/2/3/4路径下,运行test.sh后就位于脚本所在目录并输出路径了。...现在我们回头来把这个脚本拆开来理解一下 `` 表示执行引号内命令 $0 表示当前执行脚本文件名 dirname $0 表示获取当前执行脚本路径 这样一来就能明白dirname $0是如何获取当前执行脚本路径了吧...$( ) 和 `` 在这里需要补充$( ) 和 ``不同。 二者都是返回括号中命令结果,是用来作命令替换,即先完成引号里命令行,然后将其结果替换出来,再重组成新命令行。.../bin/bash basepath=$(cd `dirname $0`; pwd) echo $basepath 此时输出结果是脚本所在路径,但如果我换一种命令替换方式 #!

    1.8K20

    iOS学习——Quartz2D学习(1)

    (ctx,path.CGPath); //4.把上下文内容渲染到View上面....当创建一个UIBezierPath对象之后,我们可以使用它stroke和fill方法在current graphics context中去渲染它,这两个方法底层实现,就是获取上下文,拼接路径,把路径添加到上下文...使用stroke和fill方法进行渲染时,不需要我们手动去获取上下文了,这两个方法会自定获取view上下文,然后在该view上绘制渲染path对应路径,stroke是绘制线,fill是填充path对应封闭区域...扇形就是在圆弧基础上进行填充,但是填充需要一个封闭路径才能填充,所以画扇形方法为: 1.先画一个圆弧 2.再添加一个一根线到圆心: 3.然后封闭路径:[path closePath],该方法会自动路径终点到路径起点封闭起来...,路径终点到路径起点 [path closePath]; //画扇形边框 [path stroke]; //用填充的话,它会默认做一个封闭路径,路径终点到起点.

    1.1K20

    Node如何获取pnpm安装包源码真实代码路径并操作

    CLI因为面对业务场景和构建场景不一样,有些时候,我们会做一些差异化特性, 比如工程前端CLI有暴露代码映射拷贝行为,就是打包时候会把node_modules下某些包资源拷贝到特定路径,用于后续其他处理...姿势 node里面有一个api [require.resolve]很实用,刚好解决了我们这个场景; 它可以返回require包绝对路径【基于package.json入口字段】 demo 在我一个本地工程内...,采用pnpm安装依赖,输出绝对路径可以寻址到源码 console.log(require.resolve('yaml')); console.log(require.resolve('axios')...// editor source reference 'dist/libs/ckeditor': require.resolve('xxxx-editor'), }, 这时候CLI运行态时候就可以动态检测到这个模块绝对路径...,拿到了绝对路径

    1.6K10

    如何在 MSBuild 项目文件 csproj 中获取绝对路径

    通常我们能够在 csproj 文件中仅仅使用相对路径就完成大多数编译任务。但是有些外部命令执行需要用到绝对路径,或者对此外部工具来说,相对路径具有不同含义。...这个时候,就需要将相对路径在 csproj 中转换为绝对路径来使用。 本文介绍如何在项目文件 csproj 中将一个相对路径转换为绝对路径。...在 MSBuild 4.0 中,可以在 csproj 中编写调用 PowerShell 脚本代码,于是获取一个路径绝对路径就非常简单: 1 [System.IO.Path]::GetFullPath...WalterlvRelativePath))) 这样,就可以使用 $(_WalterlvAbsolutePath) 属性来获取绝对路径...你可以阅读我其他篇博客了解到 $(OutputPath) 其实最终都会是相对路径: 项目文件中已知属性(知道了这些,就不会随便在 csproj 中写死常量啦) - walterlv 如何更精准地设置

    27730

    京东一面:线程如何获取父线程ThreadLocal

    源码解析 分布式事务中间件 TCC-Transaction 源码解析 Eureka 和 Hystrix 源码解析 Java 并发源码 来源:blog.csdn.net/ weixin_44912855 线程如何获取父线程...京东一面」线程如何获取父线程ThreadLocal线程如何获取父线程ThreadLocal值 想要子线程获取父线程中 ThreadLocal 中值,需要其子类 InheritableThreadLocal...inheritableThreadLocal.get());         }).start();     }, "父线程");     parentParent.start(); } 运行结果如下: 线程获取父线程中...inheritableThreadLocals 这就是线程可以获取到父线程ThreadLocal值关键。...提供近 3W 行代码 SpringBoot 示例,以及超 4W 行代码电商微服务项目。 获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。 文章有帮助的话,在看,转发吧。

    1.2K50

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

    UIBezierPath,把这个路径拼接上X坐标轴上两个垂直投影点形成一个底部矩形状封闭路径,把个路径作为渐变图层path,并绘制一条比这个UIBezierPath顶部低一点路径作为 渐变图层遮罩图层...遮罩层同时做CABasicAnimation动画,渐变图层渐渐显现,渐变图层遮罩图层由 低路径过渡到高路径,就有了上图中渐变图层渐渐显现并逐渐身高效果。...,初始化几个 View,X坐标跟曲线上点X坐标一样,Y坐标的值 middleY-point.y+middleY 就是保证 初始化Y坐标是终坐标的关于中线对称点。...(3) 开始弹性动画,设置视图终点,X坐标跟曲线上点X坐标一样,Y坐标的值跟曲线上点Y坐标一样。 ,在 completion 中对 CADisplayLink定时器暂停。...(4) 在弹性动画执行期间,定时器会不断获取某一时刻所有的视图 坐标 ,并修改 曲线上位置坐标,并根据 currentLinePathForWave 这个方法绘制出 渐变图层 mask

    1.4K20

    教你如何快速 Oracle 官方文档中获取需要知识

    https://docs.oracle.com/en/database/oracle/oracle-database/index.html 如图,以上 7.3.4 到 20c 官方文档均可在线查看...11G 官方文档:https://docs.oracle.com/cd/E11882_01/server.112/e40402/toc.htm 这里以 11g R2 官方文档为例: 今天来说说怎么快速官方文档中得到自己需要知识...如果有不了解包可以在这里找到,比如说常用关于 dbms_stats包信息,包里面函数以及存储过程作用、参数说明、使用范例就可以在这文档中找到。...具体还没深入了解,但是感觉还是比较先进好用,当 plsql没有办法完成任务时候,可以使用 java存储过程来解决,比如说想要获取主机目录下文件列表。...(建议部署环境时候还是过一遍这里面的文档,网上文章因为环境差异可能在现有的硬件基础上出现这样那样问题。

    7.9K00

    如何使用GSANHTTPS网站SSL证书中提取域名

    关于GSAN  GSAN这款工具能够帮助广大研究人员HTTPS网站SSL证书中直接提取主题别名,并向我们提供DNS名称(域名)和虚拟服务器相关信息。...该工具支持HTTPS网站提取域名,并返回一个列表文件或CSV/JSON格式扫描结果输出。该工具并不是一个域名爆破工具,而是一个自动化域名扫描发现工具。  ...功能介绍  1、HTTPS网站SSL证书中直接提取主题别名; 2、域名提取/枚举; 3、支持使用文本文件或直接在终端窗口中以命令形式定义多个主机:端口; 4、CSV或JSON格式输出,...方便导入到其他工具中; 5、支持筛选出与正在分析域名所不匹配域名; 6、支持与CRT.SH集成,因此可以同一实体证书中提取更多子域名; 7、适用于自签名证书; 工具安装  由于该工具基于...根据输入参数或文本文件扫描指定域名,格式为:主机[:端口号] (向右滑动,查看更多) CRT.SH获取域名信息 $ gsan crtsh --help Usage: gsan crtsh [OPTIONS

    1.5K20

    iOS开发CoreGraphics核心图形框架之一——CGPath应用

    CGPath可以理解为图形路径,在Objective-C工程中,其实系统定义一个内部结构体,开发者不可以直接使用,开发者CGPathRef和CGMutablePathRef别名作为CGPath引用...,列举如下: //这个方法获取CGPath类在CoreGraphics框架中唯一标识 //CFTypeID 实际上是无符号整型别名 其为CoreGraphics框架中每个类都定义了一个标识 CGPath.../* 这个方法略微有些复杂 其中参数意义如下: path:要进行虚线化路径 phase:lengths数组第几部分开始绘制虚线 lengths:C风格数组 其中为CGFloat值 表示每段虚线绘制长度...cg_nullable path, CGRect * rect); //获取某个路径当前绘制所在点 CGPoint CGPathGetCurrentPoint(CGPathRef path); /.../获取某个路径包含所有点尺寸 CGPathGetBoundingBox(CGPathRef cg_nullable path); //获取某个路径尺寸 CGRect CGPathGetPathBoundingBox

    1.7K31

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

    ) drawRect: (CGRect)rect;  方法,然后在这个方法中,可以去跟当前view相关联图形上下文; 绘制相应图形内容(绘制时产生线条称为路径路径由一个或多个线段或曲线段组成)...drawInRect:CGRectMake(0, 300, 200, 40) withAttributes:dicts]; 352 353 //画图片 : 可以想象UIImageView是如何展示图片...drawAtPoint:CGPointMake(img.size.width - 120, img.size.height - 30) withAttributes:dicts]; 47 //5、图形上下文中获取图片...[path addClip]; //裁剪 69 //将图片画在上下文中 70 [img drawAtPoint:CGPointZero]; 71 72 //当前图片上下文中获取新图片...82 [self.view.layer renderInContext:ctr]; 83 //4、图形上下文获取新图片 84 UIImage *img = UIGraphicsGetImageFromCurrentImageContext

    2.6K10

    iOS设置视图圆角失效解决方案

    它有什么作用 masksToBounds指在设置layer在超出父layer时是否被裁剪,YES表示裁剪,NO表示不裁剪,默认是NO;通常在通过设置layer.cornerRadius属性实现圆角效果时要设置...masksToBounds和clipsToBounds是不同,前者指layer层在超出父layer时是否被裁剪(masksToBounds是CALayer属性),而后者指view在超出父view...maskLayer = [[CAShapeLayer alloc] init]; maskLayer.frame = self.bounds; maskLayer.path = maskPath.CGPath...maskLayer = [[CAShapeLayer alloc] init]; maskLayer.frame = self.bounds; maskLayer.path = maskPath.CGPath...(Shadow) iOS去掉TabBar顶部黑线,并添加发光阴影 https://blog.csdn.net/z929118967/article/details/93181646 III 如何对UITableView

    2.3K10
    领券