首先在java里面的绘图我们都是直接用一个Graphics来完成,但是在android里面绘制图形需要以下关键字
ImageView draw;
Bitmap bm;
Canvas cv;
Paint pt;
那么关于对这四个关键字的理解:
ImageView draw可以理解为图形将要显示在这个上面 为画布这个画布会有它的尺寸为限制
Bitmap 可以从字面意思上理解是位图,因为对于图形可以看作是由一个一个像素点所组成的,因此设置Bitmap. createBitmap就是在创建一个图形可以显示的有一定尺寸的像素点,但是这些像素点又不能直接表现出来图形,还是需要一个图形界面去做这些像素点的载体所以这就会用到ImageView,draw. setImageBitmap ( bm) ; 就是将这个位图加载到ImageView上去,位图是在ImageView上面显示出来的,但是不能直接将图形绘制在ImageView上面,
接下来是Canvas cv可以选择要绘制图形的形状,定义cv的同时将bm传进来确定将要绘制的图形会在Bitmap上
Paint pt可以设置颜色
最后通过调用cv将图形绘制出来
cv. drawCircle ( x, y, 20 , pt) ;
draw. invalidate ( ) ;
因此可以总结为,通过cv绘制图形的同时将pt(画笔)传进去,但是cv不能直接将图形绘制在ImageView上,因此需要一个Bitmap来进行一个过渡,所以会有一个cv = new Canvas(bm);就是将图形绘制在Bitmap上,然后在通过Bitmap将图形显示出来在ImageView上draw.setImageBitmap(bm) 同时思考如果想要将上次绘制的图形覆盖只需要将Bitmap进行重新创建即可,因为图形是直接绘制在Bitmap上面的,而不是在ImageView上,所以通过判断bm是否为null即可进行Bitmap的创建,如果不需要覆盖上一次绘制的图形,那么直接在一个Bitmap上进行不断绘制即可