Android 笔记 canvas.save()
来源:互联网 发布:域名抵押贷款骗局 编辑:程序博客网 时间:2024/05/23 14:53
canvas.save()/ restore()
在自定义view并且重写onDraw的时候,经常会用到canvas的坐标变换类的方法
比如canvas.rotate,canvas.tranlate,scale,或者直接使用matrix的concat(Matrix m)等等。
但是有一点要记得,那就是这些变换的方法是作用于整个canvas的,而不是单独某一个图像。
相当于是用普通的坐标在canvas上绘图,然后把整个canvas来变换,所以,所有上面的图像都会变换。
而为了给每次绘图都使用不同的变换,就有了canvas.save()和对应的canvas.restore()
每次调用save()
,系统都会把坐标状态存入堆栈中,
而每次调用restore()
,都会把栈顶的状态弹出来应用到当前的坐标系统。
也就是说,这个系统使用的是堆栈系统,所以可以多次调用save(),然后多次调用restore()
应用场景
一个典型的应用场景就是,希望每次变换坐标以后只应用到想要的图形中。
例如,我在5个区域希望绘制5个图形,所以,每次绘制一个以后就对当前的canvas应用一个坐标变换,将当前绘制的图形移动到目标位置。但是因为这种变换是对应整个坐标canvas的,所以之后的绘图也会变换到那个位置。如果需要在不同位置绘图,就只能不应用坐标变换,而是改变绘图的坐标。
如果使用了save和restore,就可以依然使用坐标还换,每次绘图的坐标还是相同的坐标。
在绘图之前,调用canvas.save()
,这样,系统会把之前的状态保存起来。
绘图……
绘图结束以后,图像出现在目标位置。
为了开始下一次绘图,先调用canvas.restore()
。这样,系统坐标会恢复上一次调用save()之前的状态。
- Android 笔记 canvas.save()
- Android Canvas save() restore()
- android canvas save和restore
- Android canvas的save()和restore()用法
- Android里Canvas的save和restore
- Android Canvas的save和restore
- Android canvas用法介绍(save, restore, translate)
- 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】Android里Canvas的save和restore
- Android中canvas.save()和canvas.restore()的使用
- Android canvas.save()和canvas.restore()的理解
- Swift 3 编写的图片分享应用
- D3.js版贪吃蛇(Eating Snake)
- 数学符号的读法
- 几个Charles姿势
- Android为invisble属性添加动画效果
- Android 笔记 canvas.save()
- [Leetcode] 9. Palindrome Number
- 计算当前日期是今年第几周的JS代码封装
- 1.26.4
- [LeetCode]303. Range Sum Query - Immutable
- 232. Implement Queue using Stacks
- 9.标题:买不到的数目
- [Leetcode] 11. Container With Most Water
- Android内存溢出与优化(三)——使用完后要close、recycle、unregister、null