Android中关于画布Skew,斜切操作的计算方式

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的调用顺序也会影响最终的结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值