上一篇博客说到了Android图像的色彩处理,使用的是ColorMatrix矩阵;本篇博客说Android图形的特效处理,使用的是Matrix这个类。
一、Android变形矩阵——Matricx:
跟Android图像的色彩处理基本一样,只是将ColorMatrix换成了Matrix,ColorMatrix是4*5的矩阵,Matrix是3*3的。每个像素点表达了其坐标的X、Y信息:
当使用变换矩阵去处理每一个像素点的时候,与颜色矩阵的矩阵乘法一样,计算公式如下所示:
通常情况下,会让 g=h=0,i=1 ,这样就使 1=gX+hY+i 恒成立。因此,只需着重关注上面几个参数即可。
与色彩变换矩阵的初始矩阵一样,图形变换矩阵也有一个初始矩阵。就是对角线元素a、e、i为1,其他元素为0的矩阵,如下图所示:
图像的变形处理通常包含以下四类基本变换:
- Translate——平移变换
- Rotate——旋转变换
- Scale——缩放变换
- Skew——错切变换
1、平移变换
平移变换的坐标值变换过程就是将每个像素点都进行平移变换,当从 P(x0,y0)平移到P(x1,y1) 时,所需的平移矩阵如下所示:
2、旋转变换
旋转变换即指一个点围绕一个中心旋转到一个新的点。当从 P(x0,y0) 点,以坐标原点O为旋转中心旋转到 P(x1,y1) 时,可以将点的坐标都表达成OP与X轴正方向夹角的函数表达式(其中r为线段OP的长度, α为OP(x