Android的Matrix利用数学原理实现图片平移、旋转等操作详解
很庆幸自己的线性代数学的还可以,理解Matrix的矩阵变换完全没有问题。Matrix矩阵实现图片的平移旋转等操作涉及到线性代数问题,感兴趣它的具体实现的话可以参考一下上面的博客,非常详细,非常好。如果不想深究也可以简单的理解为BitMap的像素点通过某种方式(Matrix)移动了相应的位置,这样就实现了图片的变换。不管怎样,先学会如何使用它就可以了。
注:我们所使用的Matrix变换必须有一个Bitmap基础,因此,代码中需要先获得Bitmap。
一、总体使用的简单展示
平移变换
//参数:移动到的位置的放大倍数
matrix.postTranslate(mBitmapwidth*2,mBitmapheight*2);
canvas.drawBitmap(mbitmap,matrix, mpaintline);
旋转变换
matrix.postRotate(180);
canvas.drawBitmap(mbitmap,matrix, mpaintline);
缩放变换
//参数:缩放倍数
matrix.postScale(2, 2);
canvas.drawBitmap(mbitmap,matrix, mpaintline);
错切变换
//x轴不变,y轴进行拉伸
matrix.postSkew(0, 1);
canvas.drawBitmap(mbitmap,matrix, mpaintline);
对称(关于x轴对称 倒影)
float[] matrix_value=new float[]{
1f,0f,0f,0f,-1f,0f,0f,0f,1f};
matrix.setValues(matrix_value);
canvas.drawBitmap(mbitmap,matrix, mpaintline);
对称(关于Y轴对称 镜像)
float[] matrix_value1=new float