自定义View - Paint
  pldY3AmarceX 2023年11月28日 20 0


介绍 Paint (画笔) 负责在Canvas (画布)上画出各种图形

常见属性

常量

  • ANTI_ALIAS_FLAG 开启抗锯齿功能的标记。
  • DITHER_FLAG 在绘制时启用抖动的标志。
  • FILTER_BITMAP_FLAG 绘制标志,在缩放的位图上启用双线性采样。
    使用:
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

paint.setFlags(Paint.DITHER_FLAG);

不过并不建议使用 setFlags 方法,这是因为 setFlags方法会覆盖之前设置的内容

构造方法

  • new Paint(); 创建一个新画笔
  • new Paint(int flags); 创建一个带标志的新画笔
  • new Paint(Paint paint); 创建一个新画笔,并使用指定画笔参数初始化

公开方法(常用)

  • setColor(int color) //设置画笔颜色
  • setFlags(int flags) //设置画笔标志位
  • reset() //重置画笔
  • setStrokeWidth(float width) //设置线条的宽度
  • setStyle(Paint.Style style) //设置绘制模式
  • setStrokeCap(Paint.Cap cap) //设置线帽
  • setStrokeJoin(Paint.Join join) //设置连接方式
  • setPathEffect(PathEffect effect) //设置Path 效果

内部类

Paint.Style
Style指定绘制的图元是否被填充,描边或两者均有(以相同的颜色)。

  • Paint.Style.FILL 填充,(默认模式)。
  • Paint.Style.STROKE 描边,只绘制图形轮廓。
  • Paint.Style.FILL_AND_STROKE 描边加填充

Paint.Cap
Cap指定了描边线和路径(Path)的开始和结束显示效果。

  • Paint.Cap.BUTT 无线帽,(默认类型)
  • Paint.Cap.SQUARE 以线条宽度为大小,在开头和结尾分别添加半个正方形。
  • Paint.Cap.ROUND 以线条宽度为直径,在开头和结尾分别添加一个半圆。

Paint.Join
Join指定线条和曲线段在描边路径上连接的处理。

  • Paint.Join.MITER 尖角 (默认模式)
  • Paint.Join.BEVEL 平角
  • Paint.Join.ROUND 圆角

PathEffect
顾名思义,它就是给path设置样式(效果)的,效果是由它的六个子类实现的:

  • 1.CornerPathEffect
    CornerPathEffect则可以将路径的转角变得圆滑,CornerPathEffect的构造方法只接受一个参数radius,意思就是转角处的圆滑程度。
    public CornerPathEffect(float radius)
    转换绘制的几何图形(描边或填充样式)将线段之间的锐角替换为圆角
    radius 指定的半径。
  • 2.DiscretePathEffect
    DiscretePathEffect(离散路径效果)相对来说则稍微复杂点,其会在路径上绘制很多“杂点”的突出来模拟一种类似生锈铁丝的效果。其构造方法有两个参数:
    segmentLength 将路径分割成分段长度的行 指定这些突出的“杂点”的密度,值越小杂点越密集;
    deviation 随机偏离原始路径的偏差 值越大突出的距离越大反之反之。
public DiscretePathEffect(float segmentLength, float deviation)
  • 3.DashPathEffect
    DashPathEffect 用于实现虚线效果(适用于 STROKE 或 FILL_AND_STROKE 样式)。
    intervals 间隔数组必须包含偶数项(>=2)
    phase 相位是间隔中的偏移量
public DashPathEffect(float intervals[], float phase)
  • 4.PathDashPathEffect
    PathDashPathEffect和DashPathEffect是类似的,不同的是PathDashPathEffect可以让我们自己定义路径虚线的样式,比如我们将其换成一个个小圆组成的虚线:
    shape 一系列形状的路径
    advance 形状的间隔
    phase 要偏移的相位量
    style 样式设置
public PathDashPathEffect(Path shape, float advance, float phase, Style style)
  • 5.ComposePathEffect
    是合并两种效果,只不过先应用一种效果后,再次叠加另一种效果,因此交换参数最终得到的效果是不同的。
    //构建一个pathEffect,其效果是先应用内部效果和外部的patheeffect(例如,outer(inner(path)))。
public ComposePathEffect(PathEffect outerpe, PathEffect innerpe)
  • 6.SumPathEffect
    用于合并两种效果,它相当于两种效果都绘制一遍。
    //构造一个pathEffect,其效果是依次应用两个效果(例如first(path) + second(path))
public SumPathEffect(PathEffect first, PathEffect second)

参考:链接: http://t.zoukankan.com/guanxinjing-p-9708601.html


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读
pldY3AmarceX