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