网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可。

Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y= -x对称等等。

1 关于Y轴对称

  1. // 获取资源文件的引用res
  2. Resources res = getResources();
  3. // 获取图形资源文件
  4. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
  5. // 设置canvas画布背景为白色
  6. canvas.drawColor(Color.BLACK);
  7. // 在画布上绘制缩放之前的位图,以做对比
  8. //屏幕上的位置坐标是0,0
  9. canvas.drawBitmap(bmp, 0, 0, null);
  10. // 定义矩阵对象
  11. Matrix matrix = new Matrix();
  12. float[] values ={-1f,0.0f,0.0f,0.0f,1f,0.0f,0.0f,0.0f,1.0f};
  13. matrix.setValues(values);
  14. System.out.println("matrix:" + matrix.toString());
  15. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
  16. matrix, true);
  17. canvas.drawBitmap(dstbmp, bmp.getWidth(), 0, null);

屏幕上包括两幅图片,一张原图,一张对称图,来形成对比效应。

2 关于X轴对称

  1. // 获取资源文件的引用res
  2. Resources res = getResources();
  3. // 获取图形资源文件
  4. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
  5. // 设置canvas画布背景为白色
  6. canvas.drawColor(Color.BLACK);
  7. // 在画布上绘制缩放之前的位图,以做对比
  8. //屏幕上的位置坐标是0,0
  9. canvas.drawBitmap(bmp, 0, 0, null);
  10. // 定义矩阵对象
  11. Matrix matrix = new Matrix();
  12. float[] values ={1f,0.0f,0.0f,0.0f,-1f,0.0f,0.0f,0.0f,1.0f};
  13. matrix.setValues(values);
  14. System.out.println("matrix:" + matrix.toString());
  15. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
  16. matrix, true);
  17. canvas.drawBitmap(dstbmp, 0, bmp.getHeight(), null);

3 关于原点对称

  1. // 获取资源文件的引用res
  2. Resources res = getResources();
  3. // 获取图形资源文件
  4. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
  5. // 设置canvas画布背景为白色
  6. canvas.drawColor(Color.BLACK);
  7. // 在画布上绘制缩放之前的位图,以做对比
  8. //屏幕上的位置坐标是0,0
  9. canvas.drawBitmap(bmp, 0, 0, null);
  10. // 定义矩阵对象
  11. Matrix matrix = new Matrix();
  12. float[] values ={-1f,0.0f,0.0f,0.0f,-1f,0.0f,0.0f,0.0f,1.0f};
  13. matrix.setValues(values);
  14. System.out.println("matrix:" + matrix.toString());
  15. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
  16. matrix, true);
  17. canvas.drawBitmap(dstbmp, bmp.getWidth(), bmp.getHeight(), null);

4 关于y = x 对称

  1. // 获取资源文件的引用res
  2. Resources res = getResources();
  3. // 获取图形资源文件
  4. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
  5. // 设置canvas画布背景为白色
  6. canvas.drawColor(Color.BLACK);
  7. // 在画布上绘制缩放之前的位图,以做对比
  8. //屏幕上的位置坐标是0,0
  9. canvas.drawBitmap(bmp, 0, 0, null);
  10. // 定义矩阵对象
  11. Matrix matrix = new Matrix();
  12. float[] values ={0f,1f,0.0f,1f,0f,0.0f,0.0f,0.0f,1.0f};
  13. matrix.setValues(values);
  14. System.out.println("matrix:" + matrix.toString());
  15. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
  16. matrix, true);
  17. canvas.drawBitmap(dstbmp, bmp.getWidth(), bmp.getHeight(), null);

5 关于y = -x对称

  1. // 获取资源文件的引用res
  2. Resources res = getResources();
  3. // 获取图形资源文件
  4. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
  5. // 设置canvas画布背景为白色
  6. canvas.drawColor(Color.BLACK);
  7. // 在画布上绘制缩放之前的位图,以做对比
  8. //屏幕上的位置坐标是0,0
  9. canvas.drawBitmap(bmp, bmp.getHeight(), 0, null);
  10. // 定义矩阵对象
  11. Matrix matrix = new Matrix();
  12. float[] values ={0f,-1f,0.0f,-1f,0f,0.0f,0.0f,0.0f,1.0f};
  13. matrix.setValues(values);
  14. System.out.println("matrix:" + matrix.toString());
  15. Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
  16. matrix, true);
  17. canvas.drawBitmap(dstbmp, 0, bmp.getHeight(), null);

最新文章

  1. linux显示中文
  2. 事件流之事件冒泡与事件捕获<JavaScript高级程序设计>学习笔记
  3. Struts2开发环境搭建,及一个简单登录功能实例
  4. 在linux下运行apt-get update 时,报错/var/lib/apt/lists/lock
  5. JSON转换类(一)--过滤特殊字符,格式化字符型、日期型、布尔型
  6. Solr之搭建Solr5.2.1服务并从Mysql上导入数据
  7. Ado.Net小练习02(小项目CUID
  8. IIS 之 查看并发连接数
  9. Java基础知识强化之集合框架笔记06:Collection集合存储自定义对象并遍历的案例
  10. composer之安装
  11. weblogic开机启动脚本
  12. AVOS_百度百科
  13. Scala学习---数组
  14. Java中的方法
  15. codeforces 893A Chess For Three 模拟
  16. 解决用友U8删除用户时提示“用户已启用”不能删除的问题
  17. git 入门教程之分支总览
  18. 南阳219----An problem about date
  19. log4j Tricks (log4j 1.2)
  20. MySql union与order by

热门文章

  1. TortoiseGit 弹出 git@xxx.com's password 对话框
  2. LINUX设备驱动程序笔记(一)设备驱动程序简单介绍
  3. 怎样用第三方开源免费软件portecle从https站点上导出SSL的CA证书?
  4. Launcher3实现壁纸居中
  5. ReactNative之Flux框架的使用
  6. Android页面事件挂接模拟
  7. 初学PHP&MySQL 2014-05-31 12:40 92人阅读 评论(0) 收藏
  8. lunix 安装使用mongo
  9. web安全:防范点击劫持的两种方式
  10. Springboot集成mybatis通用Mapper与分页插件PageHelper