android canvas save和restore
来源:互联网 发布:linux中文输入法 编辑:程序博客网 时间:2024/05/29 07:51
首先在创建新的控件或修改现有的控件时,我们都会涉及到重写控件或View的onDraw方法。
onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。
在onDraw方法里,我们经常会看到很多调用save和restore方法,他们具体是做什么用的,有什么我们需要知道的呢?
save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。
restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。
save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。
下面我们写下代码测试下:
int px = getMeasuredWidth(); int py = getMeasuredWidth();// 背景 canvas.drawRect(0, 0, px, py, backgroundPaint); canvas.save(); canvas.rotate(90, px/2, py/2);// 向上的箭头 canvas.drawLine(px / 2, 0, 0, py / 2, linePaint); canvas.drawLine(px / 2, 0, px, py / 2, linePaint); canvas.drawLine(px / 2, 0, px / 2, py, linePaint); canvas.restore();// 圆点 canvas.drawCircle(px - 10, py - 10, 10, linePaint);
那么我们了解下canvas.rotate具体做了什么,这是我开始不理解的地方而且非常重要,看图
顺时针转动90度后
我们需要知道的是坐标系也跟着变了,所以你画的向上的箭头实际上就是向右的
然而ondraw或者restore之后画布会回到之前的状态,但是你之前画的图不会跟着回去了,这点也很重要。
以上,如有错误请指正。
0 0
- android canvas save和restore
- Android Canvas save() restore()
- Canvas:save()和restore()
- Android canvas的save()和restore()用法
- Android里Canvas的save和restore
- Android Canvas的save和restore
- Android里Canvas的save和restore
- Android canvas的save()和restore()用法
- android Canvas 的save 和 restore
- Android之Canvas的save和restore
- android Canvas 的save 和 restore
- android Canvas的save和restore
- android canvas save 和 restore 用法
- android Canvas save和restore方法
- canvas.save();和canvas.restore();
- 【canvas】Android里Canvas的save和restore
- Android中canvas.save()和canvas.restore()的使用
- Android canvas.save()和canvas.restore()的理解
- 一位SDS创业者眼中的Ceph
- css
- 一个小小的tag标签输入插件
- Android Activity的加载模式和onActivityResult方法之间的冲突
- Android 一键锁屏实现
- android canvas save和restore
- web前端开发工程师面试技巧自我总结
- 谷哥渗透的关键词
- 判断ListView已到达顶部或底部的方法
- JS input文本框禁用右键和复制粘贴功能的代码
- jfreechart图表的数据刷新
- 如何选择前端框架:ANGULAR VS EMBER VS REACT
- HTML5+CSS3+JS 选项卡切换
- 通过cxf发布的webservice接口中获取来源地址的IP