如何将 CGRect 的大小增加一定的百分比值?我应该使用某种形式的CGRectInset
去做吧?
Example:
假设我有一个 CGRect:{10, 10, 110, 110}
我想将其大小增加 20%(保留相同的中心点):
{0, 0, 120, 120}
您可以使用CGRectInset
如果你喜欢:
double pct = 0.2;
CGRect newRect = CGRectInset(oldRect, -CGRectGetWidth(oldRect)*pct/2, -CGRectGetHeight(oldRect)*pct/2);
要减小尺寸,请删除-
s.
边注: A CGRect
比 20% 大{10, 10, 100, 100}
is {0, 0, 120, 120}
.
Edit:如果目的是增加面积,那么这样就可以了(即使对于非正方形的矩形):
CGFloat width = CGRectGetWidth(oldRect);
CGFloat height = CGRectGetHeight(oldRect);
double pct = 1.2; // 20% increase
double newWidth = sqrt(width * width * pct);
double newHeight = sqrt(height * height * pct);
CGRect newRect = CGRectInset(oldRect, (width-newWidth)/2, (height-newHeight)/2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)