首先讲讲canvas里面的旋转、缩放、平移、
这些都只是画布的旋转,这个canvas只是定义了画图的规则,范围,但是其实图是画在屏幕上的。
突然想到了view的缩放部分:
view.setScaleX()//设置x的缩放比例
view.setScaleY();//设置y的缩放比例
对于画布上的图片的旋转其实用的是另一个类matrix
Android中可以通过Matrix和ColorMatrix对图像进行处理.
在Android里面,Matrix由9个float值构成,是一个3*3的矩阵。最好记住。如下图:
-
Matrix图像空间变换,包括旋转、剪裁、缩放或移动.Matrix类中每个数字都将应用于图像上每个点的3个坐标x\y\z之一.
如下代码通过setValues设置值.(1,0,0)表示x坐标转换x=1x+0y+0z,同样y=0x+1y+0z,z=0x+0y+1z.该矩阵不做任何变换.**如果第一行改为(.5f,0,0),那么图像在x轴上将图像压缩50%.移动见setTranslate()函数.Matrix matrix = new Matrix(); matrix.setValues(new float[] { 1, 0, 0, 0, 1, 0, 0, 0, 1 }); Paint paint = mPaint; canvas.drawBitmap(mBitmap, 0, 0, paint); //new 一个坐标变换矩阵 Matrix cm = new Matrix();//为坐标变换矩阵设置响应的值 cm.setValues(array); //按照坐标变换矩阵的描述绘图 ---设置参数这部参照上面 canvas.drawBitmap(mBitmap, cm, paint);
-
ColorMatrix在Canvas(画布)对象上绘制时既可使用Matrix方法,也可使用ColorMatrix来改变在Canvas对象上绘制的Paint(画刷)对象.对图像的像素处理时,每个像素由RGBA值组成(Red Green Blue Alpha)
Paint paint = mPaint; 72 73 74 75 paint.setColorFilter(null); canvas.drawBitmap(mBitmap, 0, 0, paint); ColorMatrix cm = new ColorMatrix(); //设置颜色矩阵 cm.set(array); //颜色滤镜,将颜色矩阵应用于图片 paint.setColorFilter(new ColorMatrixColorFilter(cm)); //绘图 canvas.drawBitmap(mBitmap, 0, 0, paint);
网友评论