码个蛋(codeegg)第 745 次推文
原文: https://juejin.im/post/5d61514df265da03d60f0ab6
本文主要讲Android绘图基础哈~
这次的包含内容如下。
画笔用法
画布用法
颜色构造
1. 画笔用法
我们这一节来看一下画笔的用法。
本节包含内容如下。
设置画笔颜色
设置画笔样式
设置画笔宽度
设置画笔锯齿
1.1 设置画笔颜色
Paint 的 setColor(int color) 可用于设置画笔颜色,下面是 color 参数的取值。
一种颜色是由红绿蓝三色合成的,所以 color 只能取 8 位 0xAARRGGBB 样式颜色值。
透明度
A 表示透明度 Alpha,取值范围是 0~255,值越小,图像越透明
红色
R 表示红色 Red,取值范围是 0~255,取值越小红色越少
绿色
G 表示绿色 Green,取值范围是 0~255,取值越小绿色越少
蓝色
B 表示蓝色 Blue,取值范围是 0~255,取值越小蓝色越少
除了手动组合颜色,系统还提供了一个用于解析颜色的类 Color,关于 Color 在后面会有更详细的介绍。
1.2 设置画笔样式
Paint 的 setStyle(Style style) 可用于设置画笔样式,下面是 style 参数的取值。
描边
STROKE
填充
默认样式。
FILL
描边且填充
描边与填充叠加在一起显示的效果,也就是这个值比填充多了一个描边的宽度。
FILL_AND_STROKE
1.3 设置画笔宽度
Paint 的 setStrokeWidth(width) 用于设置描边宽度,单位是 px。
注意事项
当画笔的 Style 是 STROKE 或 FILL_AND_STROKE 时画笔宽度才有意义。
1.4 设置画笔锯齿
画笔 Paint 绘制图形时默认不是抗锯齿的,也就是边边会有锯齿。
Paint 提供了 setAntiAlias ,这个 可以开启画笔的抗锯齿功能。
下面是两个放大后的圆,右边的圆用的是抗锯齿的画笔绘制的。
2 画布用法
上一节演示画笔的同时也演示了画布绘制圆的 ,这一节我们来看一下画布的其他 。
本节内容如下。
设置背景
绘制直线
绘制点
矩形结构
绘制矩形
圆角矩形
2.1 设置背景
Canvas 提供了三个设置背景的 。
drawColor(int color)
drawARGB(int a, int r, int g, int b)
drawRGB(int r, int g, int b)
需要注意的是,设置画布背景要在其他图形绘制前设置,否则设置好的背景色会覆盖原有的图形。
2.2 绘制直线
Canvas 的 drawLine 可以绘制直线,直线的粗细取决于 Paint 的 setStrokeWith(width) 中传入的宽度。
绘制直线需要注意的是,只有当 Style 是 STROKE、FILL_AND_STROKE 时绘制才有效。
drawLine(float startX, float starY, float stopX, float stopY, Paint paint)
2.3 绘制点
Canvas 的 drawPoint 可以用于绘制点,点的大小取决于 setStrokeWith(width) 中传入的宽度。
drawPoint(float x, float y, Paint paint)
2.4 矩形结构
矩形结构在绘制矩形区域的时候需要用到。
Android 提供了 Rect 和 RectF 类用于存储矩形数据结构,下面是 Rect 和 RectF 的构造函数。
Rect 和 RectF 在于存储的数据类型不同。
Rect
用于保存 int 类型数值的矩形结构
RectF
用于保存 float 类型数值的矩形结构
2.5 绘制矩形
Canvas 的 drawPoint 和 drawRect 都可用于绘制矩形。
下面是这两个 的区别。
形状
drawPoint
只能指定矩形中心的坐标,只能画出正方形。
drawRect
需要指定矩形左上和右下两个点的位置,可以是长方形。
样式
drawPoint
只能是填充样式。
drawRect
可以自己选择样式,可以是描边也可以是填充。
下面是 Canvas 中提供用于绘制矩形的三个 。
drawRect(float left, float top, float right, float bottom, Paint paint)
drawRect(RectF rect, Paint paint)
drawRect(Rect r, Paint paint)
2.6 圆角矩形
Canvas 中提供了一个 drawRoundRect 用于绘制圆角矩形,圆角矩形的四个角是椭圆的一角,下面是它的基本用法。
3 颜色构造
Color 类是 Android 中与颜色有关的类。
本节内容如下。
颜色常量
构造颜色
3.1 颜色常量
Color 中定义了下面的颜色常量值。
3.2 构造颜色
除了颜色常量外,Color 还提供了一些构造颜色的 。
alpha << 就是进 24 位,当我们调用 Color.argb(255, 0, 0,0 0) 时,转换后的 16 进制颜色值就是 0xFF000000。
今日问题:
你画得怎样?