很多初学者在接触Canvas的时候,认为显示所绘制图形的屏幕就是Canvas,如果这样理解的话,就肯定无法理解canvas.save()
以及canvas.restore()
函数了。实际上Canvas和屏幕的关系更像是:
在Canvas绘制的图像,将会反映到屏幕上,但是Canvas是个可以自由变换的东西(比如平移,旋转,裁剪),而屏幕是不可变的。每次调用drawXXX来绘图的时候都会产生一个全新的Canvas图层,但是图层的变换操作是不可逆的(除非使用
canvas.save()
以及canvas.restore()
),也就是新产生的图层将会以变换后的位置或形状出现,在Canvas图层合并到屏幕上的时候超出的部分是不会显示的。最后给出一个操作步骤来理解上述过程:其实我们也可以自己创建Canvas。例如
new Canvas(mBitmap)
,通过这样的创建方式将mBitmap替换为上面提到的屏幕的概念,也就是将所有Canvas中画的图像映射到mBitmap上。而至于上面提到的可以映射到手机屏幕上的Canvas是如何创建的就需要读者自己探索了。