Android自定义控件之画布(Canvas)

共有三种方式绘制背景

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方法,操作画布。

猜你喜欢

转载自blog.csdn.net/lijianbiao0/article/details/86521499