Android学习笔记进阶九之Matrix对称变换
网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可。
Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y= -x对称等等。
1 关于Y轴对称
- // 获取资源文件的引用res
- Resources res = getResources();
- // 获取图形资源文件
- Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
- // 设置canvas画布背景为白色
- canvas.drawColor(Color.BLACK);
- // 在画布上绘制缩放之前的位图,以做对比
- //屏幕上的位置坐标是0,0
- canvas.drawBitmap(bmp, 0, 0, null);
- // 定义矩阵对象
- Matrix matrix = new Matrix();
- float[] values ={-1f,0.0f,0.0f,0.0f,1f,0.0f,0.0f,0.0f,1.0f};
- matrix.setValues(values);
- System.out.println("matrix:" + matrix.toString());
- Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
- matrix, true);
- canvas.drawBitmap(dstbmp, bmp.getWidth(), 0, null);
屏幕上包括两幅图片,一张原图,一张对称图,来形成对比效应。
2 关于X轴对称
- // 获取资源文件的引用res
- Resources res = getResources();
- // 获取图形资源文件
- Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
- // 设置canvas画布背景为白色
- canvas.drawColor(Color.BLACK);
- // 在画布上绘制缩放之前的位图,以做对比
- //屏幕上的位置坐标是0,0
- canvas.drawBitmap(bmp, 0, 0, null);
- // 定义矩阵对象
- Matrix matrix = new Matrix();
- float[] values ={1f,0.0f,0.0f,0.0f,-1f,0.0f,0.0f,0.0f,1.0f};
- matrix.setValues(values);
- System.out.println("matrix:" + matrix.toString());
- Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
- matrix, true);
- canvas.drawBitmap(dstbmp, 0, bmp.getHeight(), null);
3 关于原点对称
- // 获取资源文件的引用res
- Resources res = getResources();
- // 获取图形资源文件
- Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
- // 设置canvas画布背景为白色
- canvas.drawColor(Color.BLACK);
- // 在画布上绘制缩放之前的位图,以做对比
- //屏幕上的位置坐标是0,0
- canvas.drawBitmap(bmp, 0, 0, null);
- // 定义矩阵对象
- Matrix matrix = new Matrix();
- float[] values ={-1f,0.0f,0.0f,0.0f,-1f,0.0f,0.0f,0.0f,1.0f};
- matrix.setValues(values);
- System.out.println("matrix:" + matrix.toString());
- Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
- matrix, true);
- canvas.drawBitmap(dstbmp, bmp.getWidth(), bmp.getHeight(), null);
4 关于y = x 对称
- // 获取资源文件的引用res
- Resources res = getResources();
- // 获取图形资源文件
- Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
- // 设置canvas画布背景为白色
- canvas.drawColor(Color.BLACK);
- // 在画布上绘制缩放之前的位图,以做对比
- //屏幕上的位置坐标是0,0
- canvas.drawBitmap(bmp, 0, 0, null);
- // 定义矩阵对象
- Matrix matrix = new Matrix();
- float[] values ={0f,1f,0.0f,1f,0f,0.0f,0.0f,0.0f,1.0f};
- matrix.setValues(values);
- System.out.println("matrix:" + matrix.toString());
- Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
- matrix, true);
- canvas.drawBitmap(dstbmp, bmp.getWidth(), bmp.getHeight(), null);
5 关于y = -x对称
- // 获取资源文件的引用res
- Resources res = getResources();
- // 获取图形资源文件
- Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.v);
- // 设置canvas画布背景为白色
- canvas.drawColor(Color.BLACK);
- // 在画布上绘制缩放之前的位图,以做对比
- //屏幕上的位置坐标是0,0
- canvas.drawBitmap(bmp, bmp.getHeight(), 0, null);
- // 定义矩阵对象
- Matrix matrix = new Matrix();
- float[] values ={0f,-1f,0.0f,-1f,0f,0.0f,0.0f,0.0f,1.0f};
- matrix.setValues(values);
- System.out.println("matrix:" + matrix.toString());
- Bitmap dstbmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(),
- matrix, true);
- canvas.drawBitmap(dstbmp, 0, bmp.getHeight(), null);
转载于:https://www.cnblogs.com/Free-Thinker/p/6721779.html
Android学习笔记进阶九之Matrix对称变换相关推荐
- Android学习笔记进阶十之Matrix错切变换
刚开始我也不懂啥叫错切变换,一看效果图你就恍然大悟. 对图像的错切变换做个总结: x = x0 + b*y0; y = d*x0 + y0; 与之对应的方法是: [java] view plainco ...
- 【转】 Pro Android学习笔记(九一):了解Handler(5):组件生命
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 对于activity,消息是在OnCrea ...
- Android学习笔记进阶十一图片动画播放(AnimationDrawable)
大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它.它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFrame ...
- Android学习笔记进阶十三获得本地全部照片
这是Intent的一个用法. 在ActivityAction里面有一个"ACTION_GET_CONTENT"字符串常量,该常量让用户选择特定类型的数据. intent.setTy ...
- android给图片加边框,Android学习笔记进阶19之给图片加边框
//设置颜色 public void setColour(int color){ co = color; } //设置边框宽度 public void setBorderWidth(int width ...
- Android学习笔记进阶20之得到图片的缩略图
<1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在A ...
- Android学习笔记(九)——Activity的跳转和数据传递
---------由AActivity跳转到BActivity-------- 显式跳转1(最常用的方法) mbtnjump.setOnClickListener(new View.OnClickLi ...
- Android学习笔记(九)——更复杂的进度对话框
显示操作进度的对话框 1.使用上一篇创建的同一项目.在activity_main.xml文件里加入一个Button: <Buttonandroid:id="@+id/btn_dialo ...
- Android 学习笔记之九 下拉刷新
下拉刷新控件终结者:PullToRefreshLayout 转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38868463 源 ...
最新文章
- linux启动时间极限优化,Linux启动时间的极限优化
- 3.7python怎么安装清屏_python3.7中怎么清屏
- fiddler everywhere手机抓包_基于移动端抓包使用Fiddler模拟弱网测试
- Linux日志查看head与tail配合查看区间行数的内容
- android 创建文件夹_Android 动画小记
- 二叉树层序遍历_求二叉树的层序遍历
- 怎么用shell ssh,然后再exit?
- java 元数据 注解_Java元数据总结:Java注释的使用和定义
- 4.FX Blue 本地跟单软件EA参数说明
- abaqus 录制结果动画_录制和编辑动画 | Adobe Character Animator 教程
- compare和compareTo方法的区别
- c语言大小箱子,基于C语言箱子游戏.doc
- 波特率、比特、字、千字节、兆、G之间转换
- Mysql 连环20问
- Python-项目实战-《外星人入侵》Pygame小游戏-阶段二:外星人来了
- c语言汉诺塔实验报告,C语言汉诺塔的简单了解
- 【TensorflowTTS 中文语音生成 Win10】
- 一些非主流搜索引擎的优化
- Learning Without Forgetting 笔记及实现
- [安装之5] Mac pro更换大内存固态硬盘实践教程