美文网首页
Paint画笔高级应用

Paint画笔高级应用

作者: 风行于水 | 来源:发表于2019-05-06 12:34 被阅读0次

    Paint译为画笔,顾名思义,可以使用paint在canvas上画东西。本篇文章主要讲解Paint的一些常用API

    1、paint.setColor(Color.RED);  // 设置画笔颜色

    2、paint.setARGB(a, r, g, b); // 设置画笔颜色,范围 0 - 255

    3、paint.setAlpha(alpha); // 设置画笔透明度,范围 0 - 255

    4、paint.setAntiAlias(true); // 抗锯齿

    抗锯齿默认是关闭的,如果需要抗锯齿,需要显式地打开。另外,除了 setAntiAlias(aa) 方法,打开抗锯齿还有一个更方便的方式:构造方法。创建 Paint 对象的时候,构造方法的参数里加一个 ANTI_ALIAS_FLAG的 flag,就可以在初始化的时候就开启抗锯齿。

    5、paint.setStyle(Paint.Style.FILL); //描边效果

    6、paint.setStrokeWidth(4);//描边宽度

    7、paint.setStrokeCap(Paint.Cap.ROUND); //圆角效果

    设置线头的形状。线头形状有三种:BUTT 平头、ROUND 圆头、SQUARE 方头。默认为 BUTT。

    8、paint.setStrokeJoin(Paint.Join.MITER);//拐角风格

    设置拐角的形状。有三个值可以选择:MITER 尖角、 BEVEL 平角和 ROUND 圆角。默认为 MITER。

    /**

    *    (x0,y0):渐变起始点坐标 ,;(x1,y1):渐变结束点坐标

    *    colors:    渐变数组

    *    positions:    位置数组,position的取值范围[0,1],作用是指定某个位置的颜色值,如果传null,渐变就线性变化。

    *    tileMode:    用于指定控件区域大于指定的渐变区域时,空白区域的颜色填充方法 

    */

    new LinearGradient(x0, y0, x1, y1, new int[]{Color.RED, Color.BLUE, Color.GREEN}, new float[]{0.f,0.7f,1}, Shader.TileMode.CLAMP) ;

    /**

    *    centerX ,centerY:shader的中心坐标,开始渐变的坐标

    *    radius:     渐变的半径

    *    colors:    渐变颜色数组

    *    stoops:    渐变位置数组,类似扫描渐变的positions数组,取值[0,1],中心点为0,半径到达位置为1.0f

    *     tileMode:    shader未覆盖以外的填充模式

    */

    new RadialGradient(centerX, centerY, radius, new int[]{Color.GREEN, Color.YELLOW, Color.RED}, null, Shader.TileMode.CLAMP);

    /**

    *    cx,cy:    渐变中心坐标

    *    colors,positions:类似LinearGradient,用于多颜色渐变,positions为null时,根据颜色线性渐变 

    */

    new SweepGradient(cx, cy, Color.RED, Color.GREEN);

    /**

    *    tileX:X轴方向的TileMode

    *    tileY:    Y轴方向的TileMode

             REPEAT, 绘制区域超过渲染区域的部分,重复排版

            CLAMP, 绘制区域超过渲染区域的部分,会以最后一个像素拉伸排版

            MIRROR, 绘制区域超过渲染区域的部分,镜像翻转排版

    */

    new BitmapShader(mBitmap, Shader.TileMode.REPEAT, Shader.TileMode.MIRROR);

    /**

    *    shaderA,shaderB:    要混合的两种shader

    *    PorterDuff.Mode mode:     组合两种shader颜色的模式

    */

    new ComposeShader(bitmapShader, linearGradient, PorterDuff.Mode.MULTIPLY);

    9、paint.setShader(new SweepGradient(200, 200, Color.BLUE, Color.RED)); //设置环形渲染器

    10、paint.setFilterBitmap(true); //设置双线性过滤

    图像在放大绘制的时候,默认使用的是最近邻插值过滤,这种算法简单,但会出现马赛克现象;而如果开启了双线性过滤,就可以让结果图像显得更加平滑

    /**
    *   radius:    模糊的范围   
    *    style:    模糊的类型
    *         NORMAL:     内外都模糊绘制
    *         SOLID:     内部正常绘制,外部模糊
    *         INNER:     内部模糊,外部不绘制
    *         OUTER:     内部不绘制,外部模糊(什么鬼?)
    */
      new BlurMaskFilter(50, BlurMaskFilter.Blur.NORMAL)
    /**

    *     direction 是一个 3 个元素的数组,指定了光源的方向; 
    *     ambient 是环境光的强度,数值范围是 0 到 1;
    *     specular 是炫光的系数; 
    *     blurRadius 是应用光线的范围

    */

    new EmbossMaskFilter(float[] direction, float ambient, float specular, float blurRadius )

    11、paint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));//设置画笔遮罩滤镜 ,传入度数和样式

    12、paint.setTextScaleX(2);// 设置文本缩放倍数

    13、paint.setTextSize(38);// 设置字体大小

    14、paint.setTextAlign(Paint.Align.LEFT);//对其方式

    15、paint.setUnderlineText(true);// 设置下划线

    相关文章

      网友评论

          本文标题:Paint画笔高级应用

          本文链接:https://www.haomeiwen.com/subject/jkvloqtx.html