Android中对于画布有多种操作,translate,rotate,scale,skew,前三个还比较好理解,就最后的斜切比较抽象,网上有介绍说是讲坐标轴旋转,但是寻找目标坐标还是麻烦,他的计算方式可以理解为

如果一个点p(x,y),对于skew(),他最终的坐标就会经过下面的转换,k为skew的参数

比如,我画一个矩形,其中一个顶点是(200,300),

skew(1,0)

,对于x斜切
那么k就为1,x轴最终坐标为200+300*1=500,y轴不变,最终是(500,300)

skew(0,1)

就是对于y轴斜切,上面的公式就变成

x=x0
y=y0+k*x0

Y轴最终坐标为200*1+300 = 500,X轴不变,也就是最终变成(200,500)

当然这是分开操作斜切,canvas可以多次调用skew,效果叠加,如果上面2次斜切是连续的,也就是没有调用canvas.restore()取消对于画布的转换操作,那么第二次skew(0,1)就要根据第一次的坐标结果运算,第一次斜切后坐标为(500,300),第二次斜切y轴坐标为300+500*1=800,x轴不变,最终为
(500,800)

所以skew的调用顺序也会影响最终的结果

更多相关文章

  1. 大厂面试,居然还问这些问题!
  2. C#实现Android自动打包工具
  3. 慢学Android(安卓)Jetpack
  4. Android(安卓)Binder 应用层调用过程分析
  5. Android实现滑动效果
  6. android锁屏原理(一)
  7. android 自定义坐标曲线图
  8. Android(安卓)四大组件之 Service
  9. Android(安卓)CrashHandler编写自己的异常捕获类

随机推荐

  1. 流程图控件GoJS类别索引之类装饰
  2. mysql数据查询关于字段为100000-130000-1
  3. centos7 磁盘空间不足,扩容
  4. 在复杂业务体系中DevOps理论及方法的实践
  5. 京东app首页布局
  6. 第一篇php博客hehe
  7. 好玩、有趣的 Linux 命令学习神器 kmdr!
  8. 百分点认知智能实验室:基于不完全标注样本
  9. 软件开发之交付清单详解
  10. kubernetes ingress 原理、部署