Android Matrix矩阵

首先讲讲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); 
    

参考博文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 素材 圆角处理 public static Bitmap getRoundedCornerBitmap(Bitma...
    Don_阅读 4,411评论 2 18
  • CSDN博客 img cquwentao android matrix 最全方法详解与进阶(完整篇) 发表于201...
    北风知我意阅读 4,908评论 0 0
  • 版权声明:本文为博主原创文章,未经博主允许不得转载 前言 Canvas 本意是画布的意思,然而将它理解为绘制工具一...
    cc荣宣阅读 41,672评论 1 47
  • 俗话说“人靠衣装,佛靠金装”,合适的衣着能够是你彰显自信。搭配昂首挺胸和微笑,效果更佳。 形象很重要 总有人觉得,...
    羽扇纶巾_Q酱阅读 139评论 2 1
  • 黑狼从草原下来的时候还很小,等他到村子里的时候其实就很大了。但是他饿了一路了,瘦骨嶙峋,再加上一身黑毛,没有人很愿...
    喜寒阅读 586评论 4 5