This commit is contained in:
sloop
2016-01-27 22:20:47 +08:00
parent 99d16155d0
commit ff6df915ea

View File

@@ -260,31 +260,20 @@ float sy:将画布在y轴方向上倾斜相应的角度sy为倾斜角度的ta
<b> <b>
Q: 为什存在快照与回滚<br/> Q: 为什存在快照与回滚<br/>
A画布的操作是不可逆的而且很多画布操作会影响后续的步骤例如第一个例子两个圆形都是在坐标原点绘制的而因为坐标系的移动绘制出来的实际位置不同。所以会使用save()和restore()对画布的一些状态进行保存和回滚。 A画布的操作是不可逆的而且很多画布操作会影响后续的步骤例如第一个例子两个圆形都是在坐标原点绘制的而因为坐标系的移动绘制出来的实际位置不同。所以会对画布的一些状态进行保存和回滚。
</b> </b>
<b>与之相关的API:</b> <b>与之相关的API:</b>
相关API | 简介 相关API | 简介
--- | --- --- | ---
public int save () | 保存Canvas当前全部状态(放入状态栈栈顶,返回值为在栈中的位置) save | Canvas当前全部状态保存放入栈中
public int save (int saveFlags) | 根据saveFlags选择性的保存某些状态(放入状态栈栈顶,返回值为在栈中的位置) saveLayerXxx | 新建一个图层放入栈中
public void restore () | 取出最近一次保存(栈顶)的状态进行恢复 restore | 弹出栈顶最近在状态或图层进行恢复
public void restoreToCount (int saveCount) | 取出第saveCount次保存的状态进行恢复 restoreToCount| 弹出指定位置以上所有的状态并按照指定位置状态进行恢复
public int getSaveCount () | 获取保存的次数(即状态栈中保存状态的数量) getSaveCount | 获取栈中内容的数量(即保存次数)
<b>可以保存和恢复的内容:</b> 关于状态保存和恢复内容也有不少,不过暂不展开,今天只了解比较基础常用的操作,其余内容以后会详细讲解:
状态 | 简介
--- | ---
translate | 位移
scale | 缩放
rotate | 旋转
skew | 倾斜(错切)
concat | 矩阵相乘
clipRect, clipPath | 画布剪裁
虽然上面写了很多,不过一般最常用的两个是下面的两个:
<b> <b>
save():把当前的画布的状态进行保存,然后放入特定的栈中。<br/> save():把当前的画布的状态进行保存,然后放入特定的栈中。<br/>
@@ -299,11 +288,6 @@ restore():把栈中最顶层的画布状态取出来,并按照这个状态
``` ```
当然了你可以多次save和restore。 当然了你可以多次save和restore。
你可以通过<b>canvas.getSaveCount()</b>来获取保存的次数:
```
它的返回值最小为1代表Canvas最初的默认状态。
每调用一次save()它的数值会加1
每调用一次restore()它的数值会减1(当数值为1时不变)
```