Android图形图像处理:canvas的save()和restore()函数详解
来源:互联网 发布:linux cad 编辑:程序博客网 时间:2024/06/03 22:41
在Android图形图像处理中,canvas.save();和canvas.restore();是成对出现的,作用是用来保存画布的状态和取出保存前的状态。比如当我们对画布进行平移旋转等操作时,有时我们只是想对特定的元素进行操作,比如图片,一个矩形,但是当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,所以一般我们在操作之前调用canvas.save()来保存画布当前的状态,当操作之后调用canvas.restore()取出之前保存过的状态,这样就不会对其他的元素产生影响
首先,先上代码:
Paint p = new Paint();p.setColor(Color.RED);canvas.drawRect(0, 0, 10, 10, p);//p.setColor(Color.GREEN);//canvas.drawRect(10, 10, 20, 20, p);canvas.save();canvas.rotate(45);p.setColor(Color.GREEN);canvas.drawRect(10, 10, 20, 20, p);canvas.restore();p.setColor(Color.BLUE);canvas.drawRect(50, 50, 30, 30, p);
这段代码很好理解,就是画了红绿蓝三个正方形(注释不算)。
这段代码有save和restore,所以根据理论可以知道蓝色正方形没有旋转45度
然后我们把save和restore注释掉,根据理论可以知道蓝色会和绿色一样在边上,只露出半个
注意:rotate默认的旋转中心是(0,0)。把代码中的注释去掉再运行,从下图可以知道绿色正方形以(0,0)为旋转中心顺时针旋转45°后的样子。
旋转以后相对于旋转后的canvas,它的左上角的坐标依然是(10,10),但是相对于原canvas则是(0, 10√2)
0 0
- 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和restore
- Canvas的save和restore
- Canvas的save和restore
- Canvas的save和restore
- Canvas的save和restore
- Canvas的save和restore
- Canvas的save和restore
- 一维数组排序方法
- 端口问题让HP1010在WIN7下打印速度超慢
- [FIDO]U2F Message协议介绍
- 如何删除Android-studio中的整个项目
- php与 mysql 和 mysqli 的连接区别(原生写法)
- Android图形图像处理:canvas的save()和restore()函数详解
- Activemq 使用Stomp方式接收、过滤 topic 数据
- linux c/c++监听鼠标或键盘事件
- 一步一步学习TypeScript(12.Union Types_联合类型)
- PHP MYSQL 总结
- android usb accessory
- Linux指令--df,du
- hive 简单操作(1)
- MongoDB设置访问权限、设置用户