Skip to content

API 参考:Paint

Paint 类定义了在 Canvas 上绘制时使用的样式、颜色和效果。它是一个轻量级对象,可以在多个绘制调用中重复使用。

核心属性

颜色与透明度

  • setColor(int color):设置 ARGB 颜色。
  • setAlpha(int alpha):仅设置透明度(alpha)分量(0-255)。
  • setColor4f(Color4f color, ColorSpace space):使用浮点数值设置颜色,以获得更高精度。

样式

  • setMode(PaintMode mode):确定绘制是填充形状内部(FILL)、描边轮廓(STROKE),还是两者兼具(STROKE_AND_FILL)。
  • setStrokeWidth(float width):设置描边的粗细。
  • setStrokeCap(PaintStrokeCap cap):定义描边线条端点的形状(BUTT、ROUND、SQUARE)。
  • setStrokeJoin(PaintStrokeJoin join):定义描边线段如何连接(MITER、ROUND、BEVEL)。

抗锯齿

  • setAntiAlias(boolean enabled):启用或禁用边缘平滑。强烈建议在大多数 UI 绘制中使用。

效果与着色器

Paint 对象可以通过各种效果增强,以创建复杂的视觉效果。

着色器(渐变与图案)

着色器根据像素位置定义其颜色。

  • setShader(Shader shader):应用线性渐变、径向渐变或图像图案。

颜色滤镜

颜色滤镜在绘制前修改源颜色。

  • setColorFilter(ColorFilter filter):应用颜色矩阵、混合模式或亮度转换。

遮罩滤镜(模糊)

遮罩滤镜影响绘制的透明度通道。

  • setMaskFilter(MaskFilter filter):主要用于创建模糊和阴影效果。

图像滤镜

图像滤镜更为复杂,可以影响整个绘制结果。

  • setImageFilter(ImageFilter filter):用于模糊、投影以及组合多种效果。

使用示例

java
Paint paint = new Paint()
    .setColor(0xFF4285F4)
    .setAntiAlias(true)
    .setMode(PaintMode.STROKE)
    .setStrokeWidth(4f)
    .setStrokeJoin(PaintStrokeJoin.ROUND);

canvas.drawRect(Rect.makeXYWH(10, 10, 100, 100), paint);

性能说明

创建 Paint 对象相对较快,但在紧密循环中频繁修改它可能会带来一些开销。通常建议在渲染前准备好 Paint 对象,并在属性不变的情况下重复使用它们。