Matrix工具使用

Matrix是android android.graphics下面提供的一个对bitmap操作缩放、位移、旋转、倾斜的工具类。

使用

 一般是在Canvas中drawBitmap的时候提供一个matrix参数对draw做绘制处理,或者通过重新createBitmap提供一个
 matrix参数生成一个新的bitmap;

 通过bitmap构建一个canvs画布对象
 Bitmap bit = Bitmap.createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888);
 Canvas canvs =new Canvas(bit);

 //缩放 1是原始大小 2放大一倍 0.8就是按比例缩小到0.8  postScale一定要是float类型
 Matrix matrix =new Matrix();
 matrix.postScale(1,1);
 //位移
 matrix.setTranslate
 //倾斜
 matrix.setSkew
 //旋转
 matrix.setRotate
 //绘制到canvas上
  canvas.drawBitmap(background, matrix, null);


 createBitmap
 public Bitmap creA(Bitmap bitmap, int w, int h) {
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        float scaleWidth = w / width;
        float scaleHeight = h / height;
        Matrix matrix = new Matrix();
        matrix.setScale(scaleWidth, scaleHeight);
        return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
    }

对于一个从BitmapFactory.decodeXxx()方法加载的Bitmap对象而言,它是一个只读的,无法对其进行处理,必须使用Bitmap.createBitmap()方法重新创建一个Bitmap对象的拷贝,才可以对拷贝的Bitmap进行处理。
因为图像的变换是针对每一个像素点的,所以有些变换可能发生像素点的丢失,这里需要使用Paint.setAnitiAlias(boolean)设置来消除锯齿,这样图片变换后的效果会好很多。
在重新创建一个Bitmap对象的拷贝的时候,需要注意它的宽高,如果设置不妥,很可能变换后的像素点已经移动到"图片之外"去了。

你可能感兴趣的:(Matrix工具使用)