您的位置:首页 > 移动开发 > Android开发

canvas.save()与canvas.restore()

2016-02-17 14:58 337 查看
@Override
public void draw(Canvas canvas) {
super.draw(canvas);

/***********************************************************
* canvas.save();和canvas.restore();是成对出现的,作用是用来保存画布的状态和取出保存的状态。
* 当我们对画布进行旋转,缩放,平移等操作的时候,其实我们是想对特定的元素(比如图片,一个矩形)进行操作,但是,
* 当你用canvas的方法来进行这些操作的时候,其实是对整个画布进行了操作,那么之后在画布上的元素都会受到影响,
* 所以我们在操作之前调用canvas.save()来保存画布当前的状态,操作完后取出之前保存过的状态,这样就不会对其他的元素造成影响
*/
canvas.save();
canvas.translate(200, 200);
canvas.rotate(degrees, 0, 0);
canvas.drawRect(0, 0, 100, 100, p);
degrees ++;
canvas.restore();

canvas.save();
canvas.translate(300, 300);
canvas.rotate(degrees, 100, 100);
canvas.drawRect(0, 0, 100, 100, p);
degrees ++;
canvas.restore();

/*********************************************************
* 请求重绘View树,只绘制需要重绘的视图,即谁请求invalidate()方法,就绘制谁
* 如果是View请求invalidate()方法,则只绘制该View;
* 如果是ViewGroup请求invalidate()方法,则绘制整个ViewGroup
*/
invalidate();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  canvas Android