CodeV

4.6-拟合贝塞尔路径

清单4-6解决了使用Bezier路径的一个最重要的任务:在任意点创建路径,缩放,并将其绘制到特定的矩形中。拟合基于矢量的工艺(贝塞尔路径)确保您可以可靠地将项目放置到您预期的尺寸和目的地的绘图中。

清单4-6使用了你在本书中已经使用过的几次相同的拟合方法。不同之处在于此版本使用sacle和拟合矩形将变换应用于路径。路径移动到其新的中心,然后缩放到适当的大小。

清单4-6拟合路径

1
2
3
4
5
6
7
8
9
10
void FitPathToRect(UIBezierPath *path, CGRect destRect)
{
CGRect bounds = PathBoundingBox(path);
CGRect fitRect = RectByFittingRect(bounds, destRect);
CGFloat scale = AspectScaleFit(bounds.size, destRect);

CGPoint newCenter = RectGetCenter(fitRect);
MovePathCenterToPoint(path, newCenter);
ScalePath(path, scale, scale);
}

本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。