canvas和paint常用方法

效果图:

canvas和paint常用方法_第1张图片

页面代码:

   @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        mPaint = new Paint();

        mPaint.setColor(Color.BLACK);//设置画笔颜色
        mPaint.setTextSize(14);//设置字体大小
        canvas.drawText(actionStr, 100, 100, mPaint);//写字

        mPaint.setStrokeWidth(10);//设置线条宽度
        mPaint.setStyle(Paint.Style.STROKE);//设置空心
        canvas.drawCircle(200, 250, 80, mPaint);//画圆

        mPaint.setAntiAlias(true);//消除锯齿
        canvas.drawLine(100, 150, 300, 350, mPaint);//画线

        canvas.drawRect(100, 400, 400, 500, mPaint);//画矩形

        canvas.save();//保存画布状态
        mPaint.setStyle(Paint.Style.FILL);//设置实心
        canvas.clipRect(new Rect(100, 550, 300, 750));//裁剪出一个矩形区域
        canvas.drawColor(Color.LTGRAY);//设置画布颜色
        canvas.drawCircle(150, 600, 100, mPaint);//在裁剪区域之内,能显示
        canvas.restore();//恢复画布状态

        mPaint.setStyle(Paint.Style.STROKE);//设置空心
        RectF rectF = new RectF(100, 800, 400, 900);// 设置个新的长方形
        canvas.drawRoundRect(rectF, 20, 20, mPaint);//画圆弧矩形,第二个参数是x半径,第三个参数是y半径

        canvas.drawPoint(400, 200, mPaint);//画一个点
        canvas.drawPoints(new float[]{400, 220, 420, 220, 440, 220}, mPaint);//画多个点


        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.smile);//实例化一个bitmap
        canvas.drawBitmap(bitmap, 500, 150, mPaint);//画图片


        Path path = new Path();
        path.moveTo(400, 300);// 不会进行绘制,只用于移动移动画笔,相当于起点。
        path.lineTo(600, 350); //lineTo 用于进行直线绘制。

        path.moveTo(400, 310);// 不会进行绘制,只用于移动移动画笔,相当于起点。
        path.quadTo(650, 400, 400, 600); //quadTo 用于绘制圆滑曲线,即贝塞尔曲线。mPath.quadTo(x1, y1, x2, y2) (x1,y1) 为控制点,(x2,y2)为结束点。

        path.moveTo(400, 610);// 不会进行绘制,只用于移动移动画笔,相当于起点。
        path.cubicTo(400, 700, 500, 550, 600, 900); //cubicTo 同样是用来实现贝塞尔曲线的。mPath.cubicTo(x1, y1, x2, y2, x3, y3) (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。

        path.moveTo(600, 1000);// 不会进行绘制,只用于移动移动画笔,相当于起点。
        RectF mRectF = new RectF(400, 900, 600, 1100);
        path.arcTo(mRectF, 0, 270);//arcTo 用于绘制弧线(实际是截取圆或椭圆的一部分

        canvas.drawPath(path, mPaint);//画出曲线


        RectF rectF1 = new RectF(100, 900, 200, 1000);
        canvas.drawArc(rectF1, //弧线所使用的矩形区域大小
                0,  //开始角度
                180, //扫过的角度
                false, //是否使用中心
                mPaint);

        //按照既定点 绘制文本内容
        mPaint.setTextSize(16);
        mPaint.setStrokeWidth(1);
        canvas.drawPosText("Hello world", new float[]{20, 20, //第一个字母在坐标20,20
                30, 30, //第二个字母在坐标30,30
                40, 40, 50, 50, 60, 60, 70, 70, 80, 60, 90, 50, 100, 40, 110, 30, 120, 20}, mPaint);

        canvas.drawTextOnPath("123456789", path, 50, -30, mPaint); //按照既定路径 绘制文本内容
    }

你可能感兴趣的:(canvas,paint,PaintCode)