美文网首页
Android Matrix矩阵

Android Matrix矩阵

作者: 三季人 | 来源:发表于2016-03-02 10:53 被阅读322次

    首先讲讲canvas里面的旋转、缩放、平移、

    这些都只是画布的旋转,这个canvas只是定义了画图的规则,范围,但是其实图是画在屏幕上的。
    
    突然想到了view的缩放部分:
    
        view.setScaleX()//设置x的缩放比例
        view.setScaleY();//设置y的缩放比例
    
    对于画布上的图片的旋转其实用的是另一个类matrix
    

    Android中可以通过Matrix和ColorMatrix对图像进行处理.
    在Android里面,Matrix由9个float值构成,是一个3*3的矩阵。最好记住。如下图:

    1. 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);
      
    2. 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); 
      

    参考博文

    相关文章

      网友评论

          本文标题:Android Matrix矩阵

          本文链接:https://www.haomeiwen.com/subject/spdnkttx.html