@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.save()与canvas.restore()
最新推荐文章于 2025-03-12 11:12:57 发布