Android 在每个方向上缩放RectF对象

Android 在每个方向上缩放RectF对象,android,android-widget,scale,Android,Android Widget,Scale,可以在每个方向上按任意因子缩放的RectF对象吗? 在实践中,我会调整2倍的RectF(如果RectF是200X200,我希望他变成100x100)尝试以下方法: private void scale(RectF rect, float factor){ float diffHorizontal = (rect.right-rect.left) * (factor-1f); float diffVertical = (rect.bottom-rect.top) * (factor

可以在每个方向上按任意因子缩放的RectF对象吗?
在实践中,我会调整2倍的RectF(如果RectF是200X200,我希望他变成100x100)

尝试以下方法:

private void scale(RectF rect, float factor){
    float diffHorizontal = (rect.right-rect.left) * (factor-1f);
    float diffVertical = (rect.bottom-rect.top) * (factor-1f);

    rect.top -= diffVertical/2f;
    rect.bottom += diffVertical/2f;

    rect.left -= diffHorizontal/2f;
    rect.right += diffHorizontal/2f;
}

这是在没有测试的情况下完成的,但我认为它应该可以工作。这将使中心保持在同一位置并向外扩展。所有边都将是两倍大。

这里是我在科特林的解决方案

private fun RectF.scale(factor: Float) {
    val oldWidth = width()
    val oldHeight = height()
    val rectCenterX = left + oldWidth / 2F
    val rectCenterY = top + oldHeight / 2F
    val newWidth = oldWidth * factor
    val newHeight = oldHeight * factor
    left = rectCenterX - newWidth / 2F
    right = rectCenterX + newWidth / 2F
    top = rectCenterY - newHeight / 2F
    bottom = rectCenterY + newHeight / 2F
}
变换应使矩形的中心保持相同的坐标
(矩形中心x,矩形中心y)
,并使用浮动比例因子设置新的宽度和高度。
祝你今天愉快

它是一个值为2的浮点。我不认为真的需要它,但它告诉编译器该值是一个浮点值,而不是一个int。对我来说,它只是看起来更干净了一点。好的,我对你的代码做了一点修改,因为它有一点错误:)是的,对不起,我写这个时没有访问Andoid IDE的权限:)