前言
最近项目中要用到图表,但是现有的开源图表库不能满足我们的要求,所以要去修改它的源码,发现所有的图表库都用的是Canvas去画的,之前没有研究过它的绘制原理,接下来将其学习笔记记录与此
绘图三要素
Paint—————画笔
Bitmap————–画布
Canvas————–画家
它们三个是紧密相连的,缺一不可,不管我们画任何图形,文字,都需要用到它们
如何创建
Bitmap的创建有很多
- Bitmap.createBitmap()(Api提供了六种重载)
使用BitmapFactory获取位图
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.ic_launcher);
…
Canvas对象的获取方式有两种:
- 一种我们通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们操作这个Canvas,效果会直接反应在View中。
另一种就是当你想创建一个Canvas对象时使用的方法:
Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b);
上面代码创建了一个尺寸是100*100的Bitmap,使用它作为Canvas操作的对象,这时候的Canvas就是使用创建的方式
Paint的创建最简单
Paint paint = new Paint(); 关于Paint的属性介绍,可以参考如下地址:http://blog.csdn.net/xanxus46/article/details/7883554
绘图种类
- 弧线(arcs)
- 填充颜色(argb和color)
- Bitmap
- 圆(circle和oval)
- 点(point)
- 线(line)
- 矩形(Rect)
- 图片(Picture)
- 圆角矩形 (RoundRect)
- 文本(text)
- 顶点(Vertices)
- 路径(path)