Paint画笔高级应用

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,就可以在初始化的时候就开启抗锯齿。


Paint画笔高级应用_第1张图片

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

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

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

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


Paint画笔高级应用_第2张图片

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

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

Paint画笔高级应用_第3张图片

/**

*    (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画笔高级应用)