美文网首页
聊聊Android绘制中画笔Paint的用法

聊聊Android绘制中画笔Paint的用法

作者: 爱你为你做饭 | 来源:发表于2021-05-17 15:52 被阅读0次

Android的绘制和现实中的绘制相似,同样离不开画笔和画板,canvas就是Android绘制中的画板,提供了一系列的api用来绘制(点,线,图形,图片,阴影,文字等),而另一个就是画笔paint了,此篇文章结合最近项目对Android graphic的深度使用和理解对于paint的一些使用的整理和汇总,后续也会不停的进行补充,方便后续查询和参考。

  1. paint的基本使用
    1.1. 设置样式
       设置画笔的样式:通过mPaint.setStyle()来设置样式。
       总共有三种画笔的样式
       FILL:填充内容;
       STROKE:描边;
       FILL_AND_STROKE:填充内容并描边。
    
    1.2. 设置颜色
      paintTextWhite.setColor(Color.WHITE);
      paintTextWhite.setARGB(int a, int r, int g, int b);
      // ARGB方式设置画笔颜色
      paintTextWhite.setAlpha(int a);
      // 设置画笔的透明度
    
    1.3. 设置绘制宽度
      paintTextWhite.setStrokeWidth(8)
      需要注意的点:无论设置那种样式,此宽度必须设置,不然不会绘制
      出来,方法名容易混淆
    
    1.4. 设置防锯齿
      paintTextBlack.setAntiAlias(true);
      绘制图形文本边缘更平滑,不会出现锯齿
      方法仅能作用于图形文案,图片不能控制,若图片防锯齿可以通过
      canvas的api方法设置
    
    1.5. 设置防抖动
      paintTextBlack.setDither(true)
      防抖动可以使图片绘制更清晰更饱满,不过防锯齿和防抖动的设计
      会消耗性能
    
  2. paint的深入使用
    2.1. 设置虚线
    paintWhite.setPathEffect(new DashPathEffect(new float[]
    {5f, 5f}, 0));
    参数解析:传入float数组,数组描述了虚线的样式及其虚线长度,虚
    线即为一段实线一段虚线结合而成,数组参数控制了虚线的实虚样式
    和每一段实线或者虚线的长度。
    
    设置虚线其实是设置画笔的路径样式,除了虚线外还有其他的路径样式
    其他路径样式参考下面的文章。
    
    2.2. 设置画笔线帽
    通过mPaint.setStrokeCap来设置线帽,总共有三种线帽
    BUTT:没有线帽,默认模式
    ROUND:圆形
    SQUARE:方形
    
    2.3. 设置画笔连接线样式
    使用setStrokeJoin方法来设置Join,Join有三种类型:
    BEVEL:直线
    ROUND:圆角
    MITER:锐角
    
    2.4. 文本绘制常用设置api汇总
      paintTextWhite.setTextSize()
      //设置文本大小,需要注意的是绘制文本不能设置dp和sp,而是px
     //单位,需要涉及到换算
    
     TextView存在设置文本大小的api,其可以指定对应文本大小的单位
     ,即:        
     setTextSize(TypedValue.COMPLEX_UNIT_PX,22); //22像素 
     setTextSize(TypedValue.COMPLEX_UNIT_SP,22); //22SP 
     setTextSize(TypedValue.COMPLEX_UNIT_DIP,22);//22DIP 
    
     paintTextWhite.setTextAlign(Paint.Align.CENTER)
     //设置文本对齐方式
    
     paintTextWhite.setTypeface(Typeface.create(
     Typeface.DEFAULT, Typeface.BOLD));
    
     //设置文本加粗 下面相似
     mPaint.setTypeface(Typeface.BOLD);
    
     // Style
     Typeface.DEFAULT //常规字体类型
     Typeface.DEFAULT_BOLD //黑体字体类型
     Typeface.MONOSPACE //等宽字体类型
     Typeface.SANS_SERIF //sans serif字体类型
     Typeface.SERIF //serif字体类型
    
     public static final int NORMAL = 0 ; //常规
     public static final int BOLD = 1 ; //粗体
     public static final int ITALIC = 2 ; //斜体
     public static final int BOLD_ITALIC = 3 ; //粗斜体
    
     //设置文本粗体:
     mp.setFakeBoldText ( true );  
     //true为粗体,false为非粗体
    
     //设置字符间距:
     mPaint.setLetterSpacing(Typeface.BOLD);
    
    // 设置文本下划线
    mPaint.setUnderlineText( true );
    
    // 设置文本删除线
    mPaint.setStrikeThruText( true );
    
    // 设置文字倾斜
    mPaint.setTextSkewX(- 0 .25f);
    文字倾斜默认为0,官方推荐的-0.25f是斜体
    float类型参数,负数表示右斜,整数左斜
    
    // 计算制定长度的字符串
    int breadText = mPaint.breakText(text, measureForwards, 
    maxWidth, measuredWidth)
    
    // 加载自定义字体
    Typeface.create(familyName, style)
    
    

参考文章:
自定义控件三部曲之绘图篇(七)——Paint之函数大汇总

相关文章

网友评论

      本文标题:聊聊Android绘制中画笔Paint的用法

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