返回

Android 关于 Paint 你知道的和不知道的一切

Android

前言:最主要的还是set方法

在 Android 中,Paint 类是一个非常重要的绘图类,它提供了各种各样的方法来绘制图形和文本。可以说,它是 Android 图形绘制的基础。要使用 Paint 类,首先需要创建一个 Paint 对象,然后使用它的各种方法来设置画笔的各种属性,如颜色、线宽、画笔样式等。

Paint 类提供了很多方法,这些方法可以分为两类:一类是设置方法,另一类是绘制方法。设置方法用于设置画笔的各种属性,如颜色、线宽、画笔样式等。绘制方法用于使用画笔在 Canvas 上绘制图形和文本。

其中,最主要的还是set方法,常用的有以下这些:

  • setColor(int color):设置画笔的颜色。
  • setStrokeWidth(float width):设置画笔的线宽。
  • setStyle(Paint.Style style):设置画笔的样式。
  • setStrokeCap(Paint.Cap cap):设置画笔的线帽。
  • setStrokeJoin(Paint.Join join):设置画笔的线段连接处的样子。
  • setPathEffect(PathEffect effect):设置画笔的路径效果。
  • setMaskFilter(MaskFilter maskfilter):设置画笔的遮罩滤镜。
  • setImageFilter(ImageFilter imagefilter):设置画笔的图像滤镜。
  • setXfermode(Xfermode xfermode):设置画笔的混合模式。

这些方法可以帮助你自定义画笔,以满足不同的绘图需求。

一、画笔的常规配置

1. 颜色

画笔的颜色可以通过 setColor(int color) 方法来设置。颜色值是一个 32 位的整数,其中前 8 位表示透明度,后 24 位表示颜色。透明度值从 0 到 255,0 表示完全透明,255 表示完全不透明。颜色值可以使用 Color.rgb(int red, int green, int blue) 方法来创建,也可以使用十六进制颜色值来表示。例如,以下代码将画笔的颜色设置为红色:

paint.setColor(Color.RED);

2. 线宽

画笔的线宽可以通过 setStrokeWidth(float width) 方法来设置。线宽是一个浮点数,表示画笔的宽度。线宽的单位是像素。例如,以下代码将画笔的线宽设置为 5 个像素:

paint.setStrokeWidth(5.0f);

3. 画笔样式

画笔的样式可以通过 setStyle(Paint.Style style) 方法来设置。画笔的样式有三种:FILLSTROKEFILL_AND_STROKEFILL 表示只填充图形的内部,STROKE 表示只描边图形的轮廓,FILL_AND_STROKE 表示填充图形的内部并描边图形的轮廓。例如,以下代码将画笔的样式设置为只描边图形的轮廓:

paint.setStyle(Paint.Style.STROKE);

二、笔的样式:Paint.Style.[#FILL|STROKE|FILL_AND_STROKE]

画笔的样式用于控制填充的类型。有三种样式:

  • FILL:只填充图形内部。
  • STROKE:只描边图形轮廓。
  • FILL_AND_STROKE:填充图形内部并描边图形轮廓。

例如,以下代码将填充一个矩形:

paint.setStyle(Paint.Style.FILL);
canvas.drawRect(0, 0, 100, 100, paint);

以下代码将描边一个矩形:

paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(0, 0, 100, 100, paint);

以下代码将填充并描边一个矩形:

paint.setStyle(Paint.Style.FILL_AND_STROKE);
canvas.drawRect(0, 0, 100, 100, paint);

三、线帽:Paint.Cap.[#BUTT|ROUND|SQUARE]

线帽用于控制线段末端的形状。有三种线帽:

  • BUTT:线段末端是平的。
  • ROUND:线段末端是圆形的。
  • SQUARE:线段末端是方形的。

例如,以下代码将使用圆形线帽来绘制一条线段:

paint.setStrokeCap(Paint.Cap.ROUND);
canvas.drawLine(0, 0, 100, 100, paint);

四、线宽:setStrokeWidth()

线宽用于控制线的宽度。线宽的单位是像素。例如,以下代码将设置线宽为 5 个像素:

paint.setStrokeWidth(5.0f);

五、颜色:setColor()

颜色用于控制线的颜色。颜色可以是任何颜色值,例如红色、绿色、蓝色等。例如,以下代码将设置线的颜色为红色:

paint.setColor(Color.RED);

六、路径效果:setPathEffect()

路径效果用于控制线的路径。路径效果可以是任何路径效果,例如虚线、点线、波浪线等。例如,以下代码将设置线的路径为虚线:

paint.setPathEffect(new DashPathEffect(new float[]{10.0f, 5.0f}, 0.0f));

七、遮罩滤镜:setMaskFilter()

遮罩滤镜用于控制线的边缘。遮罩滤镜可以是任何遮罩滤镜,例如模糊、发光、浮雕等。例如,以下代码将设置线的边缘为模糊:

paint.setMaskFilter(new BlurMaskFilter(10.0f, BlurMaskFilter.Blur.NORMAL));

八、图像滤镜:setImageFilter()

图像滤镜用于控制线的图像。图像滤镜可以是任何图像滤镜,例如灰度、反色、浮雕等。例如,以下代码将设置线的图像为灰度:

paint.setImageFilter(new ColorMatrixColorFilter(new float[]{0.2126f, 0.7152f, 0.0722f, 0.0f, 0.0f, 0.2126f, 0.7152f, 0.0722f, 0.0f, 0.0f, 0.2126f, 0.7152f, 0.0722f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f}));

九、Xfermode:setXfermode()

Xfermode用于控制线的混合模式。Xfermode可以是任何混合模式,例如叠加、乘法、屏幕等。例如,以下代码将设置线的混合模式为叠加:

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.OVERLAY));

十、文本绘制

除了绘制图形外,Paint 类还可以用来绘制文本。要绘制文本,首先需要创建一个 Paint 对象,然后使用它的 drawText() 方法来绘制文本。drawText() 方法的第一个参数是文本内容,第二个参数是文本的起始位置,第三个参数是文本的结束位置,第四个参数是画笔。例如,以下代码将绘制一段文本:

String text = "Hello, world!";
paint.setColor(Color.BLACK);
paint.setTextSize(20.0f);
canvas.drawText(text, 0, 0, paint);

结语

通过本文,你已经对 Android 中的 Paint 类有了全面的了解。你可以使用 Paint 类来绘制各种各样的图形和文本。发挥你的想象力,使用 Paint 类来创建出美观大方的界面和图形。