共有三种方式绘制背景
canvas.drawColor(@ColorInt int color)
canvas.drawRGB(int r, int g, int b)
canvas.drawARGB(int a, int r, int g, int b)
绘制直线
drawLine(float startX, float startY, float stopX, float stopY,Paint paint)
直线的粗细和绘制风格没有关系,例如三种绘制效果图:
由此可见,setStrokeWidth不起作用时,Style起作用,当Style不起作用时,setStrokeWidth起作用。
绘制点
drawPoint(float x, float y, @NonNull Paint paint)
绘制圆角矩形
drawRoundRect(@NonNull RectF rect, float rx, float ry, @NonNull Paint paint)
参数:矩形,X轴半径,Y轴半径。
其原理如下:
绘制圆
drawCircle(float cx, float cy, float radius, @NonNull Paint paint)
绘制椭圆(以矩形X轴为X轴椭圆半径,Y轴为椭圆Y轴半径)
drawOval(@NonNull RectF oval, @NonNull Paint paint)
效果图如下:
绘制弧
drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter, @NonNull Paint paint)
参数如下:
示例代码如下:
效果图如下:
绘制路径
drawPath(Path path, Paint paint)
路径:直线路径:
Path.lineTo
例如:绘制三角形
Path p = new Path();
p.moveTo(100,100);
p.lineTo(200,100);
p.lineTo(200,200);
p.close();
canvas.drawPath(p,paint);
路径:弧线路径:
Path.arcTo
平移画布:translate(float dx, float dy)
旋转画布:public void rotate(float degrees)
缩放画布:public void scale(float sx, float sy)
扭曲画布:public void skew(float sx, float sy)
裁剪画布:当裁剪完画布后,画布操作只能对裁剪过后的区域有效,除非调用Save或ReStore方法,操作画布。