在学图片矩阵变换相关内容时,矩阵的变换(旋转等)总是从左上角(0,0)开始,但一般我们需要的是旋转中心点在图片的中心点,所以要加上:
mMatrix.preTranslate(-centerX, -centerY);
mMatrix.postTranslate(centerX, centerY);
//(centerX,centerY)为图片中心点坐标
解析这两行代码:
假设图片中心点为(centerX,centerY),既然Camera始终以(0,0)为中心点,那么我先将图形矩阵往左移动centerX,再往上移动centerY,让(centerX,centerY)正好掐在初始的(0,0)上,这样进行变形的话,中心点就变成了(centerX,centerY),达到了目的,当然这还没结束,你既然偏移了(-centerX,-centerY),那么变形以后得移回来,然后再往右下方分别移动centerX,centerY,而这两行代码完成的就是这样的操作。
注:
Matrix提供的三种变形方式为:set,post,pre。
set就是先reset,然后进行变形
pre可以解释为先乘,在矩阵原理中对应的右乘
post可以理解成后乘,在矩阵远离中对应左乘