前言
上一节我们讲到了canvas可以绘制很多的图形,现在就来看看它的具体使用方法
点
一个点:
drawPoint(float x, float y, Paint paint) //x:水平x轴,y:垂直y轴,第三个参数为Paint对象。
多个点:
drawPoints (float[] pts, Paint paint) drawPoints (float[] pts, int offset, int count, Paint paint) eg:canvas.drawPoints(new float[]{20f, 20f, 120f, 20f, 120f, 120f, 20f, 120f}, painnt)//每个端点占用两个数据。
线
一条线:
drawLine(float startX, float startY, float stopX, float stopY, @NonNull Paint paint) {
多条线:
drawLines(@NonNull float[] pts, @NonNull Paint paint) //每条线占用4个数据即起点和终点
面
面又分为很多种,分不同的形状,比如
矩形
drawRect(@NonNull Rect r, @NonNull Paint paint)
drawRect(float left, float top, float right, float bottom, @NonNull Paint paint)
drawRect(@NonNull RectF rect, @NonNull Paint paint)
drawRoundRect(@NonNull RectF rect, float rx, float ry, @NonNull Paint paint)//花带圆角的矩形
//Rect跟RectF区别只是精度不同
圆
drawCircle(float cx, float cy, float radius, @NonNull Paint paint)
椭圆
drawOval(@NonNull RectF oval, @NonNull Paint paint)
自定义饼状图形和圆弧(如扇型)
drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter,
@NonNull Paint paint) //oval为圆的矩形范围,startAngle为起始角度,sweepAngle为需要滑过的角度,默认0点在右边,sweep是按顺时针转,useCenter代表圆是否封闭
绘制自定义图形(如三角形,五角星)
Path path = new Path();
path.moveTo(27, 360);
path.lineTo(54, 360);
path.lineTo(70, 392);
path.lineTo(40, 420);
path.lineTo(10, 392);
path.close();
//根据Path进行绘制,绘制五角星
canvas.drawPath(path2, paint);
文字
drawText(@NonNull String text, float x, float y, @NonNull Paint paint)
其他几个方法类似就不举例,注意此处要通过paint设置字体的大小,粗细,颜色 等等
bitmap
drawBitmap(bitmap, null, rect, paint);//rect设置其画在某个区域内
drawBitmap(@NonNull Bitmap bitmap, @NonNull Matrix matrix, @Nullable Paint paint) //matrix我还没弄清楚,下次再补上