Matrix这个东西不常用,来自计算机图形学,用来进行一些矩阵变换。
MSCALE控制着缩放,MSKEW控制着扭曲,MTRANS控制着平移,MPERSP在3D中才有用,控制着着透视。
matrix.setTranslate()//直接设置平移
matrix.preTranslate()//右乘一个位移矩阵
matrix.postTranslate()//左乘一个位移矩阵
那么什么是左乘呢?
M’ = T(dx, dy) * M
M是原矩阵,T(dx, dy)是矩阵变换,在左边就是左乘(post),在右边就是右乘(pre),说了等于没说。直接举个例子吧。连续preTranslate()前乘,看起来像按代码调用顺序平移。而如果连续postTranslate()后乘,则看起来像先执行最后面一行代码的平移。这么说起来,pre右乘更像按我们代码顺序执行的。矩阵的使用如下:
canvas.setMatrix(matrix);
让画布执行矩阵变换。
canvas.drawBitmap(bitmap, matrix, paint);
绘制一个带矩阵变换的位图,比如要绘制一个扭曲后的图像。
阅读量:779
点赞量:0
收藏量:0