Android中绘图学习笔记(二)

前言

上一节我们讲到了canvas可以绘制很多的图形,现在就来看看它的具体使用方法

  1. 一个点:

    drawPoint(float x, float y, Paint paint) //x:水平x轴,y:垂直y轴,第三个参数为Paint对象。
    
  2. 多个点:

    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)//每个端点占用两个数据。
    
线
  1. 一条线:

    drawLine(float startX, float startY, float stopX, float stopY,
        @NonNull Paint paint) {
    
  2. 多条线:

    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我还没弄清楚,下次再补上