很多时候都看到对canvas的save()和restore()运用。
从名字上面来看,就是保存canvas和还原canvas,这个俩个在处理图像的平移、旋转、剪切方面使用的比较多。
/**
* Saves the current matrix and clip onto a private stack. Subsequent
* calls to translate,scale,rotate,skew,concat or clipRect,clipPath
* will all operate as usual, but when the balancing call to restore()
* is made, those calls will be forgotten, and the settings that existed
* before the save() will be reinstated.
*
* @return The value to pass to restoreToCount() to balance this save()
*/
public native int save();
SDK如是解释:
个人的理解是:保存当前的matrix clip translate等操作。在save()之后的这些操作将保存到画布中去,当调用restore()的时候,将还原canvas到调用save()之前的状态。
/**
* This call balances a previous call to save(), and is used to remove all
* modifications to the matrix/clip state since the last save call. It is
* an error to call restore() more times than save() was called.
*/
public native void restore();
大致意思应该是:还原canvas的类似matrix/clip 等操作到save()调用之前的状态。
并且save()和restore应该是成对的使用的!