You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从CGMutablePath创建CGRect?能否用其实现CGRect交集运算?

从CGMutablePath获取CGRect并计算交集的方法

嘿,你遇到的这个问题其实很常见——直接用CGRect(myPath)这种写法确实行不通,因为CGRect压根没有接收CGPath类型的初始化器。不过别担心,我们有很简单的解决办法:

获取CGMutablePath的外接CGRect

CGMutablePath是CGPath的子类,而CGPath自带了boundingRect属性,它会返回刚好能包裹整个路径的最小矩形。你只需要直接访问这个属性,就能得到对应的CGRect了。

关于创建第二个CGRect并计算交集

完全可行!只要你能拿到第二个CGMutablePath的外接矩形,就可以正常调用CGRect的intersection(_:)方法来计算两个矩形的交集。

完整代码示例

// 假设你已经创建了两个CGMutablePath实例
let myPath = CGMutablePath()
myPath.addRect(CGRect(x: 0, y: 0, width: 100, height: 100))

let anotherPath = CGMutablePath()
anotherPath.addEllipse(in: CGRect(x: 50, y: 50, width: 100, height: 100))

// 获取两个路径的外接矩形
let rect1 = myPath.boundingRect
let rect2 = anotherPath.boundingRect

// 计算矩形交集
let intersectionRect = rect2.intersection(rect1)

额外提示

如果你的路径应用了变换(比如平移、旋转、缩放),可以使用boundingRect(with:)方法并传入对应的变换矩阵,来获取变换后路径的外接矩形:

let transform = CGAffineTransform(translationX: 20, y: 20)
let transformedRect = myPath.boundingRect(with: transform)

内容的提问来源于stack exchange,提问作者JFS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:02:06