Android View 通过平移、旋转、缩放后,顶点映射
View 通过如下操作,在平移、旋转、缩放后,其本身的 left、top、right、bottom、width、height是没有变化的。
平移:setTranslationX(), setTranslationY() ;
旋转:setRotationX(), setRotationY() ;
缩放:setScaleX(), setScaleY() 。
在三种操作后,获取新的 ltrb、w、h 就需要重新计算了
/*** author: stone* email: aa86799@163.com** view 平移、旋转、缩放 变换后,计算新的 ltrb*/
fun mapPoints(model: View): FloatArray {val l = model.leftval t = model.topval r = model.left + model.widthval b = model.top + model.heightval dst = floatArrayOf(l, t, r, b)val matrix = Matrix()val cx = l + (r - l) / 2val cy = t + (b - t) / 2matrix.postTranslate(model.translationX, model.translationY)matrix.postRotate(model.rotate, cx, cy) // 以view的中心点旋转matrix.postScale(model.scaleX, model.scaleY, cx, cy)matrix.mapPoints(dst)return dst
}
更新(2023-04-10):
最近写了个示例,带有旋转操作后,mapPoints(),映射后的 左上和右下顶点是正常的、而右上和左下是不正常的。
直接用mapRect() 结果就是所预期的。
Android View 通过平移、旋转、缩放后,顶点映射相关推荐
- Unity 触屏手势控制Camera平移旋转缩放
Unity 触屏手势控制Camera平移旋转缩放 实现思路 单点触屏,位移增量控制相机平移: 两点触屏,两点位移控制相机前后移动(缩放):两点中一点不位移控制相机绕点旋转: 实现需要的API Touc ...
- 解决echart地图在平移和缩放后,重新生成地图,这时生成的地图不在容器中间,会跑到容器外面去。
解决echart地图在平移和缩放后跑到容器外面去 写在前面 解决办法 实现效果图 外卖红包优惠券在哪里领,那些天天都可以领外卖优惠券的公众号是真的吗? 写在前面 用echart做一个中国地图(可缩放和 ...
- 文本框固定任意一顶点后,拖动相对点任意旋转缩放,计算缩放后顶点坐标
问题描述 鼠标拖动缩放文本框的时候,需要重新计算缩放后文本框四个顶点的坐标,然后重新绘制新文本框 在Office上,缩放文本框的操作一般是鼠标拖动八个控制点其中一个,然后固定住与其相对的控制点的位置, ...
- 三维空间中的几何变换-平移旋转缩放
前言 前段时间由于项目需要,深入学习了下图形几何变换,主要是绕任意轴旋转部分(其他的已有一定基础),现记录学习笔记. 文章内容部分引用并参考了下面的博客: http://netclass.csu.ed ...
- Unity矩阵平移旋转缩放Matrix4x4
Unity中的矩阵(Matrix4x4) 最近在研究帧同步定点数物理系统中需要自定义定点数矩阵,所以在这里分享下基础的矩阵案例旋转.平移.缩放.(注意这里本文中的transform组件式基于unity ...
- WebGL编程指南-24 同时使用漫反射光和环境反射光、立方体平移旋转缩放变换时漫反射光和环境反射光处理
1.demo效果 此效果是上一章绘制的立方体基础上,向Y轴方向平移一个单位,然后绕Z轴旋转30度. 如上图,归纳一下物体坐标变换法向量变化的规律如下 平移变换, 法向量不会改变 旋转变换, 大多数情况 ...
- 三维坐标 偏转_三维坐标变换原理-平移, 旋转, 缩放
给定一个二维点(x, y),那么形如(kx, ky, k)的所有三元组就都是等价的,它们就是这个点的齐次坐标(homogeneous).齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指 ...
- 三维坐标要建一个4*4的矩阵?平移 旋转 缩放
移植不知道三维物体的旋转平移缩放和矩阵的关系.找到这篇文章借鉴一下. 转自:https://blog.csdn.net/ALLENJIAO/article/details/80348362 怎么平移一 ...
- Cesium变换3DTiles的位置(平移旋转缩放)
function add3DTilesetDataTrans(url) { //viewer1.scene.globe.depthTestAgainstTerrain = tr ...
最新文章
- RHEL7系统管理之内核管理
- PNAS最新研究揭示大脑如何学习语言
- 可输入过滤和直接选择的select控件
- 边缘指示函数matlab,matlab图像处理——傅立叶变换边缘提取
- vi 编辑器命令 (share)
- 手动释放linux服务器内存
- java根据id查询名字_Mybatis根据id查询用户信息
- 电子计算机X线体层摄影,电子计算机X线体层摄影检查诊断乳腺肿块的价值
- 沃特世推出SELECT SERIES MRT多反射飞行时间质谱平台,树立高分辨质谱性能新标杆
- Zabbix监控系统系列之九:监控网络设备指定接口流量
- [Z] 通天塔导游:各种编程语言的优缺点
- Excel忽略0值求平均分,将某一列分类后求平均值
- Apple设备型号名称映射表
- 前端进度报告(2018.6.3)
- NUC980开源项目40-PLC远程下载/内网穿透(非技术)
- java 案例 一千例,【发现问题、解决问题系列案例分享(二十一)】 一个自动执行命令,每天节省一千分钟!...
- MySQL详解----------海量数据分页查询优化
- 安卓开发第一个apk
- 二进宫的爱美客,再冲击IPO背后的雷区
- 面向规划衔接的完整街道详细分类方法
热门文章
- PPT学习——1.局部高亮,其余变暗,凸显内容的方法
- ABB超高效非晶合金干式变压器ECODRY
- [备忘] 查看浏览器中flash swf的trace调试输出
- javascript实现类似于淘宝的星级评价
- 腾讯云mysql被黑_他被推下悬崖差点惨死,却意外得到MySQL的秘密......
- 【项目实践】关于维修电子设备的几点建议和经验
- 5G智慧医疗 5G医疗接入网关
- 基于卷积神经网络的信用卡欺诈侦测
- 领导力来自天赋?还是学习?
- 知识星球《玩转股票量化交易》之Backtrader量化框架的使用说明