我想知道canvas.save和canvas.restore是如何工作的。
我希望它如何工作,以及我如何使用它(但不起作用)。
我真正需要的是在某个阶段(背景)保存我的画布,然后在它上面绘制对象,而不必每次我想要更新我的画布时绘制背景。
答案 0 :(得分:9)
Canvas.save()& restore()不作用于附加到画布的位图...它们用于控制画布绘制环境的各个方面,特别是当前剪切区域和矩阵。
如果你想画一个旋转的精灵,你可以使用save()并恢复。要做到这一点,你首先保存()当前的画布状态,然后你翻译(),以便原点 - 像素地址(0,0) - 你想要精灵去的地方,然后你旋转(),然后你可以drawBitmap()。最后,您可以将绘图环境恢复()恢复正常。
所以你每次都注定要画背景。如果这是一个复杂的操作,请将其存储在屏幕外位图中。只要背景可以在单个操作中绘制(比如说drawBitmap),性能不应该受到太大影响。
答案 1 :(得分:0)
好的,所以我明白了。 我可以使用画布将包含大量图像的背景绘制到一个位图,非常简单。
首先创建一个具有所需int高度和int宽度的空位图,这将是您将绘制所有图块的位图(小图像)。
位图背景= Bitmap.createBitmap(width,heigth,Bitmap.Config.ARGB_4444);
(不确定语法Bitmap.Config.ARGB_4444,使用工具提示) 然后使用新的Canvas(位图)创建一个画布,这将使画布写入位图。
Canvas canvas new Canvas(背景);
现在您可以根据需要编写画布,所有这些都将存储在位图中供以后使用。