Android自定义View - Matrix-灵析社区

chole

Matrix这个东西不常用,来自计算机图形学,用来进行一些矩阵变换。


MSCALE控制着缩放,MSKEW控制着扭曲,MTRANS控制着平移,MPERSP在3D中才有用,控制着着透视。

安卓矩阵set、pre(前乘、右乘)和post(后乘,左乘)开头的方法

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