关于Android(安卓)Paint.Cap枚举和Paint.Join枚举的使用
16lz
2021-01-26
目录
- Cap枚举
- Join枚举
Cap枚举
Cap指定了线段和路径的开始和结束的描边处理方式,共三种处理方式 ,默认处理方式是BUTT。
如下:
- BUTT 貌似与SQUARE一样
- ROUND 线段的开始和结束的是圆形的
- SQUARE 线段的开始和结束的是方形的
看图说话,如下图所示
看圈住的部分,线段结尾显示不一样 红线为BUTT 绿线为ROUND 蓝线为SQUARE
Join枚举
Join指定了线段和曲线段连接处的描边处理方式,共三种处理方式,默认处理方式是MITER。
如下:
- MITER 连接处显示为直角
- ROUND 连接处显示为圆角
- BRVEL 连接处显示为斜角(感觉被切了一刀)
看图说话,如下图所示
看圈住的部分,每个拐角处显示不一样 红线为MITER 绿线为ROUND 蓝线为BRVEL
注意上面所说的都是描边处理,只有在Paint的setStyle为Paint.Style.STROKE
和Paint.Style.FILL_AND_STROKE
下起作用
示例代码如下:
package com.github.xiaohu409.pathdemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;/** * 文件名:PathView * 描述: * 作者: hutao * 日期: 2019/3/21 * 版本: v1.0 */public class PathView extends View { private Paint paint; private Path path; public PathView(Context context) { this(context, null); } public PathView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public PathView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { //创建画笔 paint = new Paint(); //设置画笔的填充样式 paint.setStyle(Paint.Style.STROKE); //描边的宽度 paint.setStrokeWidth(14); //创建路径 path = new Path(); //设置路径的起始位置 path.moveTo(10, 10); for (int i = 0; i <= 40; i++) { //生成路径 path.lineTo(i * 25, (float) Math.random() * 100); } paint.setTextSize(100); paint.setTextAlign(Paint.Align.RIGHT); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //指定画笔的开始结束描边处理 paint.setStrokeCap(Paint.Cap.BUTT); //指定画笔的连接处的描边处理 paint.setStrokeJoin(Paint.Join.MITER); //指定画笔的颜色 paint.setColor(Color.RED); //画指定路径 canvas.drawPath(path, paint); //设置画板的位移距离 canvas.translate(0, 60); paint.setStrokeCap(Paint.Cap.ROUND); paint.setStrokeJoin(Paint.Join.ROUND); paint.setColor(Color.GREEN); canvas.drawPath(path, paint); canvas.translate(0, 60); paint.setStrokeCap(Paint.Cap.SQUARE); paint.setStrokeJoin(Paint.Join.BEVEL); paint.setColor(Color.BLUE); canvas.drawPath(path, paint); canvas.translate(0, 60); canvas.drawTextOnPath("huao", path, 120, 120, paint); }}
更多相关文章
- 缩放图片 : matrix.setScale(0.5f,0.5f);
- 水波纹效果---3环波纹
- Text控件运用小收集
- android 线段与矩形碰撞检测
- 自定义带百分比进度条
- android学习 4-25使用Path 绘制几何图形
- Android画一个随意拖动的圆形
- Android(安卓)ApiDemos示例解析(129):Views->Layout Animation->
- Android(安卓)USB Host与HID通讯