1.在onDraw方法里,我们经常会看到调用save和restore方法
save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。
restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响
save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。
2.
int restoreCount = canvas.save();
canvas.restoreToCount(restoreCount);
Canvas.restoreToCount(int);//恢复为之前堆栈保存的编号为int的Canvas状态
Canvas也可多次保存不同的状态,并予以编号:
Canvas.save(int);//将Canvas当前状态保存在堆栈,并予以编号int
Canvas.rotate(45.0f);//Canvas旋转45度
Canvas.restoreToCount(int);//恢复为之前堆栈保存的编号为int的Canvas状态
3.
Canvas.save();//将Canvas当前状态保存在堆栈
Canvas.rotate(45.0f);//Canvas旋转45度
Canvas.restore();//恢复为之前堆栈保存的Canvas状态,即旋转前的状态
4.
canvas.translate(160, 10);//把当前画布的原点移到(160,10),后面的操作都以(160,10)作为参照点,
canvas.clipRect(10, 10, 90, 90);//这里的真实坐标为左上(170,170)、右下(250,250)