如何从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
相关产品推荐
相关产品推荐

