Canvas官方介绍
The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colors and styles for the drawing).
-
翻译一下 Canvas用来实现对绘图的操作。你需要4个组件来实现绘图的操作:
1.bitmap,保存着像素
2.canvas.执行画图的命令(向bitmap执行写操作)
3.drawing primtive(e.g.Rect,Path,text,bitmap).绘图的原始内容。
4.paint.(用来描述绘图时的使用的颜色和风格) -
这些解释都很抽象,下面我来说下对它们的形象的理解,说明这4个基本控件,这样加深印象:
1. bitmap:我们绘图肯定需要一块画布,这个画布承载内容用来表现所要显示的图。它有大小,你可以在上面涂颜料进行绘图,或什么都不涂。
2 canvas:画布本身不会被绘制,只有当画家去操作画笔,画布才会绘制上图画。这里的canvas就像相当于画家执行画图的操作,绘图的过程。
3: drawing primitive:画家绘图需要参照物,比如你绘图,肯定是有个目标,比如绘制一个字体,一个圆圈,一个矩形(Rect),另一幅图(bitmap)。
4 paint:绘图需要画笔,paint就相当于这个画笔,你可以定制颜色,粗细。 -
Canvas 通常在哪儿绘制
1.Canvas与BitMap结合后,Bitmap就像是一块儿画布,任由Canvas绘制
//假设srcBitmap已经创建
Bitmap destBitmap = Bitmap.createBitmap(srcBitmap.getWidth, srcBitmap.getHeight, srcBitmap.getConfig);//创建一个空白的Bitmap
Canvas canvas = new Canvas(destBitmap );//创建Canvas并绑定destBitmap
canvas.drawBitmap(srcBitmap, ,0,0, new Paint());
imageView.setImageBitmap(afterBitmap);
2.自定义View
@Override
OnDraw(Canvas canvas){
//利用canvas执行绘图操作
}
3.SurfaceView:优点可以在子线程中进行绘制
SurfaceHoler holder = surfaceView.getHolder();
Canvas canvas = holder.lockCanvas();
//利用canvas进行绘图操作
holder.unlockCanvasAndPost(canvas);//对canvas解锁,并更新
网友评论