安卓自定义view之Canvas和Paint方法

简介

在自定义 View的时候,Canvas和paint是我们经常会用到的东西.
Canvas可以理解为画布的意思.
Paint可以理解为画笔的意思.
下面将Canvas和paint对象常用方法做个笔记,方便记忆。

Canvas 方法

一.改变Canvas的坐标系位置

1.平移坐标系

canvas.translate(myWidth / 2, myHeight / 2);

2.缩放坐标系

canvas.scale(0.5f,0.5f);

3.旋转坐标系

canvas.rotate(30);

二.Canvas保存和还原

Canvas提供了几个方法,让我们可以方便的对Canvas的状态进行更改和还原。
这些方法是:save()、restore()、restoreToCount(int saveCount)。

我们在对Canvas进行平移、旋转、放大等操作时候,可以调用save()方法,将当前修改过的Canvas状态进行保存,调用restore() 方法后,会将Canvas还原成最近的一个save() 的状态。

   @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //一.canvas先保存画布状态
        canvas.save();
        //二.改变canvas的坐标原点位置
        canvas.translate(myWidth / 2, myHeight / 2); //平移坐标系
//        canvas.scale(0.5f,0.5f); //缩放坐标系
//        canvas.rotate(30);//旋转坐标系
        //三.具体的绘制方法
        drawPie(canvas);

        //四.canvas取出之前保存的画布状态,为了不影响其他人使用画布的属性
        canvas.restore();

    }

三.绘制图形

        canvas.drawRect(rect,paint);//绘制矩形
        canvas.drawRoundRect(rect,100,100,paint);//绘制圆角矩形
        canvas.drawText("O(∩_∩)O~", 0, 0, paint);//绘制文字
        canvas.drawArc(rect,0,30,true,paint);//绘制扇形
        canvas.drawCircle(0, 0, radius, paint);//绘制圆形
        canvas.drawLine(50, 0, 500, 0, paint);//绘制直线
        canvas.drawOval(rect,paint);//绘制圆形
        canvas.drawPoint(0,0,paint);//绘制单个点

        canvas.drawBitmap(rawBitmap, 0, 0, paint);//画布上绘制图片
        canvas.drawColor(Color.RED);//画布上绘制颜色

        canvas.drawPath(path2, paint);//画出贝塞尔曲线

Paint方法

       paint2.set(paint);//将paint copy给paint2

//        设置画笔样式,如果不设置,默认是全部填充(FILL)。可选项为:FILL(填充),FILL_OR_STROKE(描边并填充),或STROKE(描边)
        paint2.setStyle(Paint.Style.FILL);

        paint2.setColor(Color.RED);//设置颜色
        paint2.setARGB(12,22,22,22);//设置颜色
        paint2.setAlpha(11);//设置透明度
        paint2.setAntiAlias(true);//抗锯齿
        paint2.setTextSize(Utils.dip2px(mContent, 17));//设置文字大小
        paint2.setStrokeWidth(Utils.dip2px(mContent, 5));//设置线宽
        paint2.setFakeBoldText(true);//设置粗体
        paint2.setTypeface(Typeface.DEFAULT_BOLD); //设置字体,Typeface包含了字体的类型,粗细,还有倾斜、颜色等。
        paint2.setUnderlineText(true);//设置下划线

        paint2.setTextAlign(Paint.Align.CENTER);//对齐方式
        paint2.setLetterSpacing(2.0f);//行间距
        paint2.setTextScaleX(0.5f);//缩放倍速
        paint2.setTextSkewX(0.3f);//设置文本在水平方向上的倾斜


        paint2.setShadowLayer(10, 10, 10, Color.BLUE);//设置阴影效果
        paint2.setShader();//设置着色器,用来给图像着色的,绘制出各种渐变效果
        具体参见这篇文章http://www.cnblogs.com/tianzhijiexian/p/4298660.html

        paint2.measureText("aaaa");//测量字体的长度了

猜你喜欢

转载自blog.csdn.net/jin870132/article/details/77343747