Android canvas 基础图形详解

一:canvas的常用方法

操作类型 相关API 备注
绘制颜色 drawColor,drawRGB,drawARGB 给画布绘制颜色
绘制形状 drawPoint, drawPoints, drawLine, drawLines, drawRect, drawRoundRect, drawOval, drawCircle, drawArc 依次为 点、线、矩形、圆角矩形、椭圆、圆、圆弧
绘制图片 drawBitmap, drawPicture 绘制位图和图片
绘制文本 drawText, drawPosText, drawTextOnPath 依次为 绘制文字、绘制文字时指定每个文字位置、根据路径绘制文字
绘制路径 drawPath 绘制路径,绘制贝塞尔曲线时也需要用到该函数
顶点操作 drawVertices, drawBitmapMesh 通过对顶点操作可以使图像形变,drawVertices直接对画布作用、 drawBitmapMesh只对绘制的Bitmap作用
画布剪裁 clipPath, clipRect 设置画布的显示区域
画布快照 save, restore, saveLayerXxx, restoreToCount, getSaveCount 依次为 保存当前状态、 回滚到上一次保存的状态、 保存图层状态、 回滚到指定状态、 获取保存次数
画布变换 translate, scale, rotate, skew 依次为 位移、缩放、 旋转、错切
Matrix(矩阵) getMatrix, setMatrix, concat 实际画布的位移,缩放等操作的都是图像矩阵Matrix,只不过Matrix比较难以理解和使用,故封装了一些常用的方法。

二:canvas基础图形详解

绘制颜色
canvas.drawColor(Color.parseColor("#88FFFF00"));
Android canvas 基础图形详解_第1张图片
drawColor.png
绘制点

绘制图形前先初始化一个画笔

 Paint paint = new Paint();
 paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.parseColor("#FF83FA"));
paint.setStrokeWidth(20);

绘制一个点和绘制多个点

        //画一个点
        canvas.drawPoint(200, 200, paint);
        //画多个点
        canvas.drawPoints(new float[]{200, 300, 300, 300, 400, 300}, paint);
Android canvas 基础图形详解_第2张图片
points.png
绘制线

绘制一条线和绘制多条线

        //画一条线
        canvas.drawLine(200, 300, 600, 300, paint);
        //画多条线
        canvas.drawLines(new float[]{200, 550, 350, 850, 200, 550, 600, 850},paint);
Android canvas 基础图形详解_第3张图片
line.png
绘制矩形
        //画矩形
        //paint.setStyle(Paint.Style.FILL);这里设置的填充,如果想画空心的设置style为STROKE
        //第一种
        canvas.drawRect(100, 200, 300, 400, paint);
        //第二种
        Rect rect = new Rect(100, 200, 300, 400);
        canvas.drawRect(rect,paint);
        //第三种
        RectF rectF = new RectF(100, 200, 300, 400);
        canvas.drawRect(rectF,paint);
Android canvas 基础图形详解_第4张图片
rect.png
绘制圆角矩形

绘制圆角矩形的参数中有两个半径,下面看看参数解析


Android canvas 基础图形详解_第5张图片
round.png
        //画圆角矩形
        //第一种
        canvas.drawRoundRect(100, 200, 800, 600, 80, 80, paint);
        //第二种
        RectF rectF = new RectF(100, 200, 800, 600);
        canvas.drawRoundRect(rectF, 80, 80, paint);
Android canvas 基础图形详解_第6张图片
roundRect.png
绘制椭圆

绘制椭圆只需要一个矩阵作为参数

        //画椭圆
        //第一种
        canvas.drawOval(100, 200, 900, 600, paint);
        //第二种
        RectF rectF = new RectF(100, 200, 900, 600);
        canvas.drawOval(rectF,paint);
Android canvas 基础图形详解_第7张图片
oval.png
绘制圆
        //画圆
        //  前两个参数是圆心坐标,第三个参数是半径
        canvas.drawCircle(500, 500, 250, paint);
Android canvas 基础图形详解_第8张图片
circle.png
绘制弧

下面介绍弧的参数

// 第一种
public void drawArc(@NonNull RectF oval, float startAngle, float sweepAngle, boolean useCenter, @NonNull Paint paint){}
    
// 第二种
public void drawArc(float left, float top, float right, float bottom, float startAngle,
            float sweepAngle, boolean useCenter, @NonNull Paint paint) {}

startAngle:开始的角度,sweepAngle:扫描的角度,useCenter:是否使用中心,下面看看差别

        //画弧
        //先画个底部的背景矩形
        RectF rectF = new RectF(100, 200, 600, 500);
        paint.setColor(Color.GRAY);
        canvas.drawRect(rectF, paint);
        //startAngle:开始角度,sweepAngle:画的角度,useCenter:是否使用圆心
        paint.setColor(Color.parseColor("#FFFF00"));
        //canvas.drawArc(rectF, 0, 90, false, paint);
        canvas.drawArc(rectF, 0, 90, true, paint);
Android canvas 基础图形详解_第9张图片
false.png

Android canvas 基础图形详解_第10张图片
true.png

你可能感兴趣的:(Android canvas 基础图形详解)