Paint(一):画笔基本使用

1. 设置获取图形绘制、路径相关的

1.1 设置画笔颜色

    paint.setColor(color);

1.2 设置透明度

    paint.setAlpha(alpha);

1.3 设置颜色

    paint.setARGB(a, r, g, b);

1.4 设置画笔是否抗锯齿

    paint.setAntiAlias(true);

1.5 设置图像是否使用抖动处理,会使得绘制出来的图片更加平滑和饱满,图像更加清晰

    paint.setDither(true);

1.6 设置画笔倾斜度

    paint.setStrokeMiter(f);

1.7 设置画笔宽度

    paint.setStrokeWidth(width);

1.8 设置一个外来Paint画笔。

    paint.set(paint)

1.9 设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果

    paint.setXfermode(xfermode); 

1.10 设置 MaskFilter,可以用不同的 MaskFilter 实现滤镜的效果,如滤化,立体等

    paint.setMaskFilter(maskfilter); 

1.11 设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果

    paint.setColorFilter(colorfilter);

1.12 设置图像效果,使用Shader可以绘制出各种渐变效果

    paint.setShader(Shader shader);

1.12 设置图像效果,使用Shader可以绘制出各种渐变效果

    paint.setShader(Shader shader);

1.13 在图形下面设置阴影层,产生阴影效果

       /**
         * radius 阴影的角度
         * dx   阴影在x轴上的距离
         * dy   阴影在y轴上的距离
         * color    阴影的颜色
         */
        paint.setShadowLayer(radius, dx, dy, color);

1.14 设置画笔样式,取值有

  • Paint.Style.FILL :填充内部
  • Paint.Style.STROKE :仅描边
  • Paint.Style.FILL_AND_STROKE :填充内部和描边
    注意STROKE、FILL_OR_STROKE与FILL模式下外轮廓的位置会扩大。
    paint.setStyle(Paint.Style.FILL);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStyle(Paint.Style.FILL_AND_STROKE);

1.15 设置线冒(线的两端,又说笔触风格)样式

  • Paint.Cap.BUTT :无线冒
  • Paint.Cap.SQUARE :方形线冒
  • Paint.Cap.ROUND :圆形线冒
    paint.setStrokeCap(Paint.Cap.BUTT);
    paint.setStrokeCap(Paint.Cap.SQUARE);
    paint.setStrokeCap(Paint.Cap.ROUND);

2 设置获取文字相关的

2.1 获取字符行间距

    paint.getFontSpacing();

2.2 设置和获取字符间距(API21)

    paint.setLetterSpacing(letterSpacing);
    paint.getLetterSpacing();

2.3 是否有下划线和设置下划线

    paint.isUnderlineText();
    paint.setUnderlineText(true);

2.4 获取与设置是否有文本删除线

    paint.isStrikeThruText();
    paint.setStrikeThruText(true);

2.5 获取与设置文字大小

    paint.getTextSize();
    paint.setTextSize(textSize);

注意:使用时不同分辨率处理问题
Paint.setTextSize传入的单位是px
TextView.setTextSize传入的单位是sp

2.6 获取与设置字体类型

     paint.getTypeface();
     paint.setTypeface(Typeface.DEFAULT);//默认字体
     paint.setTypeface(Typeface.DEFAULT_BOLD);//加粗字体
     paint.setTypeface(Typeface.SANS_SERIF);//sans字体
     paint.setTypeface(Typeface.SERIF);//serif字体
     paint.setTypeface(Typeface.MONOSPACE);//monospace字体

2.7 获取与设置文字倾斜

参数没有具体范围,官方推荐值为-0.25,
- 值为负则右倾
- 为正则左倾
- 默认值为0

    paint.getTextScaleX();
    paint.setTextScaleX(scaleX);

2.7 获取与设置文本对齐方式

取值为CENTER、LEFT、RIGHT,也就是文字绘制是左边对齐、右边还是居中的

    paint.getTextAlign();
    paint.setTextAlign(Paint.Align.LEFT);
    paint.setTextAlign(Paint.Align.CENTER);
    paint.setTextAlign(Paint.Align.RIGHT);

2.8 设置亚像素

  • 亚像素:就是把两个相邻的两个像素之间的距离再细分,再插入一些像素,这些通过程序加入的像素就是亚像素。在两个像素间插入的像素个数是通过程序计算出来的,一般是插入两个、三个或四个。
  • 所以打开亚像素显示,是可以在增强文本显示清晰度的,但由于插入亚像素是通过程序计算而来的,所以会耗费一定的计算机性能。
    paint.setSubpixelText(true);

2.9 获取文本的宽高,通过 bounds 的 Rect 拿到整型

    paint.getTextBounds(String text, int start, int end, Rect bounds);
    paint.getTextBounds(char[] text, int index, int count, Rect bounds);

2.10 粗略获取文本的宽度,和上面的getTextBounds比较类似,返回浮点数

    paint.measureText(String text);
    paint.measureText(CharSequence text, int start, int end);
    paint.measureText(String text, int start, int end);
    paint.measureText(char[] text, int index, int count);

2.11 精确计算文字宽度,与上面两个类似

    paint.getTextWidths(String text, int start, int end, float[] widths);
    paint.getTextWidths(String text, float[] widths);
    paint.getTextWidths(CharSequence text, int start, int end, float[] widths);
    paint.getTextWidths(char[] text, int index, int count, float[] widths);

猜你喜欢

转载自blog.csdn.net/qq_33393910/article/details/81185249