Canvas

it holds all of your "draw" calls. Via the Canvas, your drawing is actually performed upon an underlying Bitmap, which is placed into the window.

说明及理解:

1.在View的事件回调方法onDraw()中,要做的仅仅是直接使用draw方法(canvas已经提供给你了,不需要再考虑canvas问题)。对于SurfaceView,可以通过surfaceHolder.lockCanvas()方法获得特定的canvas。

2.如果要自己新建一个Canvas,必需定义一个Bitmap。这样在canvas上调用的各种draw方法画出的内容都将承载在bitmap上。

However, if you need to create a new Canvas, then you must define the Bitmap upon which drawing will actually be performed. The Bitmap is always required for a Canvas. You can set up a new Canvas like this:

Bitmap b =Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888); 
Canvas c =newCanvas(b);

3.你可以把你自己的Bitmap放到其它Canvas上。 通过Canvas.drawBitmap(Bitmap,...)方法。

但建议,你最终的图像是画在View.onDraw()的画布上或者surfaceHolder.lockCanvas()的画布上。

4.Canvas类有自己的画画方法集。如drawBitmap(...),drawRect(...)等等。你可能用到的其他的类,它们也有自己的画画方法。如你画在Canvas上的Drawable对象,也有draw()方法。它们是把canvas作为draw()方法的参数。

 


 

——by muyable 乐于交流
原文地址:https://www.cnblogs.com/muyable/p/3750094.html