##对图片进行特效处理(熟悉)
* 首先定义一个矩阵对象
Matrix mt = new Matrix();
* 缩放效果
//x轴缩放1倍,y轴缩放0.5倍
mt.setScale(1, 0.5f);
* 旋转效果
//以copyBm.getWidth() / 2, copyBm.getHeight() / 2点为轴点,顺时旋转30度
mt.setRotate(30, copyBm.getWidth() / 2, copyBm.getHeight() / 2);
* 平移
//x轴坐标+10,y轴坐标+20
mt.setTranslate(10, 20);
* 镜面
//把X坐标都变成负数
mt.setScale(-1, 1);
//图片整体向右移
mt.postTranslate(copyBm.getWidth(), 0);
* 倒影
//把Y坐标都变成负数
mt.setScale(1, -1);
//图片整体向下移
mt.postTranslate(0, copyBm.getHeight());
部分代码:
//加载原图 Bitmap bmSrc = BitmapFactory.decodeResource(getResources(), R.drawable.photo3); //创建副本 //1.创建与原图一模一样大小的bitmap对象,该对象中目前是没有内容的,可以比喻为创建了和原图一样大小的白纸 Bitmap bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(), bmSrc.getConfig()); //2.创建画笔对象 Paint paint = new Paint(); //3.创建画板,把白纸铺到画板上 Canvas canvas = new Canvas(bmCopy); Matrix mt = new Matrix(); //平移效果,指定平移距离// mt.setTranslate(20, 10); //缩放效果,指定缩放比例// mt.setScale(2, 0.5f, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2); //旋转效果// mt.setRotate(45, bmCopy.getWidth() / 2, bmCopy.getHeight() / 2); //镜面效果// mt.setScale(-1, 1);// mt.postTranslate(bmCopy.getWidth(), 0); //倒影效果 mt.setScale(1, -1); mt.postTranslate(0, bmCopy.getHeight()); canvas.drawBitmap(bmSrc, mt, paint); ImageView iv_src = (ImageView) findViewById(R.id.iv_src); iv_src.setImageBitmap(bmSrc); ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy); iv_copy.setImageBitmap(bmCopy);