繁体   English   中英

如何获得缩放视图的边界?

[英]how to get bounds of a scaled view?

似乎setScaleX或setScaleY实际上并没有更改left,top,right,bottom属性。 getX和getY也保持不变。

因此,如果我缩放视图,最简单的方法是什么来获得新缩放视图的4个角坐标?

我尝试了getHitRect,但这没有给我正确的答案。 我试图避免基于现有转换(考虑了轴的旋转和缩放)手动计算新边界。

探索了视图api之后,似乎没有直接的API方法可以执行此操作。

但是,您可以通过获取视图的变换矩阵并使用它来获取新的边界来轻松获得新的点。

像这样:

Matrix m = view.getMatrix();
Rect bbox = new Rect();
view.getDrawingRect(bbox); 
m.mapRect(bbox);  

如果要直接在(x,y)坐标上进行操作,则存在一个matrix.mapPoints将达到相同的结果。

我相信,如果获得宽度和高度并乘以比例,就可以得到缩放的宽度和高度。

int scaledWidth = getWidth() * getScaleX();
int scaledHeight = getHeight() * getScaleY();

int newLeft = getLeft() + (scaledWidth / 2);
int newRight = newLeft + scaledWidth;

int newTop = getTop() + (scaledHeight / 2);
int newBottom = newTop + scaledHeight;

假设您在视图中心使用轴x和y进行缩放。 如果您在奇怪的地方有工作,事情会变得更加复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM