android中延续java绘画机制:画板(canvas),画笔(Paint);
这里先介绍简单的api使用:
Paint
setColor(int color) 设置画笔的颜色;
setStyle(Style style)设置填充样式;
Paint.Style.FILL:仅填充内部;
Paint.Style.FILL_AND_STROKE:填充内部和描边;
Paint.Style.STROKE:仅描边;
setStrokeWidth(float width) 设置画笔宽度,单位为px;
setAntiAlias(boolean b) 设置抗锯齿(抗锯齿算法,一般用于绘制不规则图形,如圆相关,文字相关必用);
Canvas
1.画布背景的设置:
void drawColor(int color)
void drawARGB(int a, int r, int g, int b)
void drawRGB(int r, int g, int b)
2.画直线
void drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
起点坐标,终点坐标,画笔;
画笔的填充值与直线的粗细无关;
3.绘制多条直线
3.1 void drawLines(float[] pts, Paint paint)
坐标集,画笔;
pts中的值为成对出现,依次两点成线;
3.2 void drawLines(float[] pts, int offset, int count, Paint paint)
坐标集,选索引处的值开始绘制,索引开始绘制的点的个数,画笔
例:drawLines(pts,2,4,paint) 意思为:从索引为2的数字开始绘制,往后的4个值参与绘制,依次两点成线。
4.点
void drawPoint(float x, float y, Paint paint)
坐标,画笔;
点的大小只与画笔粗细相关,与style无关;
5.多个点
void drawPoints(float[] pts, Paint paint)
void drawPoints(float[] pts, int offset, int count, Paint paint)
6.矩形工具
RectF的四个构造函数:
RectF()
RectF(float left, float top, float right, float bottom)
RectF(RectF r)
RectF(Rect r)
Rect的三个构造函数
Rect()
Rect(int left, int top, int right, int bottom)
Rect(Rect r)
绘制一个矩形结构
6.1 Rect rect = new Rect(10,10,100,100);
6.2 间接构造
Rect rect = new Rect();
rect.set(10,10,100,100);
7.绘制矩形
void drawRect(float left, float top, float right, float bottom, Paint paint);
void drawRect(RectF rect, Paint paint);
void drawRect(Rect r, Paint paint);
8.绘制圆角矩形
void drawRoundRect(RectF rect, float rx, float ry,Paint paint);
原理:椭圆嵌套矩形之后的位置
rx:生成圆角的椭圆的X轴半径
ry:生成眼角的椭圆的Y轴半径
9.圆形
void drawCircle(float cx, float cy, float radius, Paint paint);
圆心坐标,圆的半径,画笔
10.椭圆
void drawOval(RectF oval, Paint paint);
椭圆是根据矩形所占的位置来绘制的,以矩形的长为X轴,以矩形的宽为椭圆的Y轴;
11.弧
弧是椭圆的一部分,椭圆是矩形的一部分,ok!
void drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint);
RectF oval:生成椭圆的矩形;
startAngle:圆弧开始的角度,以X轴正方向为0;
sweepAngle:弧持续的角度
useCenter : 是否有弧的两边 为false时只有一条弧
例子:drawArc(rect,0,90,true,paint) 以0度开始绘制到90度的扇形(因为为true,所以有双边)
这里有填充特效;