博客
关于我
Android 绘图之Paint
阅读量:625 次
发布时间:2019-03-13

本文共 2876 字,大约阅读时间需要 9 分钟。

Paint在Android中的应用分别介绍

Paint库是Android开发中常用的图形绘制工具,其提供了丰富的功能和属性设置。以下将从不同功能模块详细介绍Paint的使用方法。

一、 Paint的基本使用

1. 获取Paint对象

创建一个Paint对象的基本方式是调用其默认构造方法:

val paint = Paint(Paint.ANTI_ALIAS_FLAG)

2. Paint的主要属性设置

Paint类提供了多种方法来设置属性,主要包括以下几种常用方法:

a. 颜色设置

  • 使用setColor(int color)设置颜色(资源文件内)。
  • 使用setARGB(int a, int r, int g, int b)设置带透明度的颜色。
  • 使用setAlpha(int a)设置透明度。

b. 抗锯齿处理

paint.setAntiAlias(true)

c. 抗抖动处理

paint.setDither(true)

二、文本绘制相关设置

文本绘制时常用的设置方法包括:

a. 字体大小

paint.setTextSize(20f)

b. 字体样式

paint.setTypeface(getTypeFace())

c. 文本对齐方式

paint.setTextAlign(Paint.Align.CENTER)

三、图形绘制相关设置

图形绘制时常用的设置方法包括:

a. 描边宽度

paint.setStrokeWidth(5f)

b. 绘制样式

paint.setStyle(Paint.Style.STROKE)

c. 线帽类型

paint.set.setStrokeCap(Paint.Cap.ROUND)

d. 线段连接方式

paint.setStrokeJoin(Paint.Join.ROUND)

四、Shader渲染效果

Shader增强了绘制效果,常用的方式是通过设置Paint.shader属性。以下是几种常见的Shader类型:

a. LinearGradient线性渐变

val shader = LinearGradient(    0f, 0f,    300f, 0f,    Color.RED, Color.GREEN,    Shader.TileMode.CLAMP)

b. RadialGradient放射渐变

val shader = RadialGradient(    180f, 150f,    150f,    Color.RED, Color.GREEN,    Shader.TileMode.CLAMP)

c. SweepGradient扫描渐变

val shader = SweepGradient(    150f, 150f,    Color.RED, Color.GREEN)

d. BitmapShader位图渲染

val bitmap = BitmapFactory.decodeResource(getResources(), R.drawable bitmap)val shader = BitmapShader(    bitmap,    Shader.TileMode.MIRROR,    Shader.TileMode.MIRROR)

e. ComposeShader组合渲染

val shader = ComposeShader(    bitmapShader,    linearGradient,    PorterDuff.Mode.MULTIPLY)

五、颜色过滤效果

颜色过滤器可以用来调整图像颜色,常用的包括:

a. LightingColorFilter灯光过滤

LightingColorFilter(    ColorConvert enum_RGBToHSV values)

b. ColorMatrixColorFilter颜色矩阵过滤

ColorMatrixColorFilter用于自定义颜色矩阵处理:

val matrix = ColorMatrix()matrix.setSaturation(-100f)val filter = ColorMatrixColorFilter(matrix)

六、PathEffect路径效果

PathEffect专门用于在绘制路径时添加效果,常用的包括:

a. DashPathEffect虚线效果

val effect = DashPathEffect(float[] segments, float phase)

b. CornerPathEffect圆角效果

val effect = CornerPathEffect(32f)

c. DiscretePathEffect切割线段效果

val effect = DiscretePathEffect(10f, 5f)

七、综合应用示例

以下是一个综合使用多种效果的实例:

@Overridefun onDraw(canvas: Canvas) {    val mPaint = Paint()    // 设置颜色和样式    mPaint.color = Color.GREEN    mPaint.style = Paint.Style.STROKE    mPaint.strokeWidth = 8f    // 使用PathEffect    val mPath = Path()    mPath.moveTo(100f, 100f)    mPath.lineTo(300f, 300f)    mPath.lineTo(100f, 500f)    mPath.lineTo(300f, 700f)    // 创建一条偏移后的Path效果    val mPathSrc = Path()    mPathSrc.moveTo(100f + 100f, 100f)    mPathSrc.lineTo(300f + 100f, 300f)    mPathSrc.lineTo(100f + 100f, 500f)    mPathSrc.lineTo(300f + 100f, 700f)    // 调用PathEffect设置    mPaint.pathEffect = DashPathEffect(floatArrayOf(15f, 5f), 0f)    canvas.drawPath(mPath, mPaint)    // 重置PathEffect    mPaint.pathEffect = null    canvas.drawPath(mPathSrc, mPaint)    mPath.reset()    mPathSrc.reset()}

以上就是对Paint在Android开发中的各项功能的详细说明,通过合理设置Paint的属性和效果,可以实现丰富多样的图形绘制效果。

转载地址:http://heoaz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现DNF排序算法(附完整源码)
查看>>
Objective-C实现doomsday末日算法(附完整源码)
查看>>
Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
查看>>
Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
查看>>
Objective-C实现double hash双哈希算法(附完整源码)
查看>>
Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
查看>>
Objective-C实现double linear search 双线性搜索算法(附完整源码)
查看>>
Objective-C实现double sort双重排序算法(附完整源码)
查看>>
Objective-C实现DoublyLinkedList双链表的算法(附完整源码)
查看>>
Objective-C实现DoublyLinkedList双链表算法(附完整源码)
查看>>
Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
查看>>
Objective-C实现DWT离散小波变换(附完整源码)
查看>>
Objective-C实现Edmonds-Karp算法(附完整源码)
查看>>
Objective-C实现EEMD算法(附完整源码)
查看>>
Objective-C实现elgamal 密钥生成器算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现EM算法(附完整源码)
查看>>
Objective-C实现entropy熵算法(附完整源码)
查看>>
Objective-C实现euclidean distance欧式距离算法(附完整源码)
查看>>
Objective-C实现Euclidean GCD欧几里得最大公约数算法(附完整源码)
查看>>