作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个非常简单的代码...
CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(-50, -50, 100, 100), NULL);
NSLog(@"Original path bounds = %@", NSStringFromRect(CGPathGetBoundingBox(path)));
CGAffineTransform t = CGAffineTransformMakeRotation(0.75 * M_PI);
CGPathRef tPath = CGPathCreateCopyByTransformingPath(path, &t);
NSLog(@"Transformed path bounds = %@", NSStringFromRect(CGPathGetBoundingBox(tPath)));
CGPathRelease(path);
CGPathRelease(tPath);
...产生以下奇怪的输出:
[...] Original path bounds = {{-50, -50}, {100, 100}}
[...] Transformed path bounds = {{-54.881553646890872, -54.881553646890872}, {109.76310729378174, 109.76310729378174}}
由于它是一个以 (0,0) 为中心的圆,任何旋转是否都不应保留原始边界框?到底为什么边界框会变大?或者这是苹果的一个错误?
最佳答案
这里的问题是 CGPathGetBoundingBox()
函数包含用于构造圆的贝塞尔曲线的控制点。这些控制点位于圆的外部,因此当您旋转圆时,它们自然会出现在原始边界框之外。
解决方案是使用 CGPathGetPathBoundingBox()
函数,该函数不在计算路径边界框时包含控制点。
关于cocoa - CGPathGetBoundingBox 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26313553/
这个非常简单的代码... CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(-50, -50, 100, 100), NULL); N
我正在集成一个用早期 Swift 编写的库。由于该库与 Swift 4 的兼容版本不可用,我正在自己删除错误。 有这一行: let pathBounds = CGPathGetBoundingBox(
我是一名优秀的程序员,十分优秀!