前言:用path画折线,2条线相交处导圆角
简介:为开发者提供工具类,方便对使用path画折线设置圆角。使用path画多边形,如三角形、矩形、平行四边形等,同时设置圆角。另外提供计算直线上某点坐标。
实现原理
三个点,2条直线相交,给中间点连接处导圆角。设圆角半径为radius, 三个点分别为p2, p3,p1, 如下图所示:给p3点处导圆角。先求出导圆角处连接的2点p4、p5坐标,再用path连接p2和p4,然后通过p4、p3、p5绘制贝塞尔曲线连接p4、p5两个点,最后连接p5、p1两个点。
总结:计算圆角的起始和结束点,使用贝塞尔曲线绘制圆角。

API使用:
三角形导圆效果如下:
导圆角之后
调用api如下
int r = 22;//圆角尺寸
Path path = SimplePath.buildle()
.moveTo(50, 50, r, r)//起始点
.lineTo(200, 50, r, r)
.lineTo(200, 250, r, r)
.close()//结束,完成三角形
.build();
矩形导圆角
Path path = SimplePath.buildle()
.addRect(50, 50, 200, 250, r)
.build();
其它API使用:
获取线上点坐标 public static float[] getOnLinePointLocationEnd(float lenght, float x1, float y1, float x2, float y2)
示例:上述实现原理中,计算圆角起始坐标点p4. float[] p2f = SimplePath.getOnLinePointLocationEnd(r,x1,y1,x2,y2); Point p2 = new Point(p2f[0], p2f[1]); 其中r在这里是圆角半径,表示圆角起始点p4与中间点p2之间的距离。 画线并添加圆角 (绘制的线是起始点到圆角结束点的路径,并不包含到第三点路径) public static void lineToAndCorner(Path path, float startRadius, float endRadius, float x1, float y1, float x2, float y2, float x3, float y3)
示例:上述实现原理中,如果给p3点导圆角r.
path先要自行设置起始点p2, 然后
SimplePath.lineToAndCorner(path, r, r, p2.x, p2.y, p3.x, p3.y, p1.x,p1y);
绘制的线是 p2到p4,再到p5的路径, 不包含,p5到p1的路径。目标点是中间点p3.
备注:方法参数详情请查阅源码
源码:
package com.ttkx.deviceinfo.bkchart;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import java.util.ArrayList;
import java.util.List;
public class SimplePath {
public static Buildle buildle() {
return new Bui

该文章介绍了一个Android工具类SimplePath,用于帮助开发者在使用Path绘制折线时添加圆角效果。通过贝塞尔曲线,可以为三角形、矩形等多边形的各个角设置圆润过渡。API包括设置起点、终点圆角、计算线上点坐标等功能,适用于创建带有圆角效果的图形。
最低0.47元/天 解锁文章
1822

被折叠的 条评论
为什么被折叠?



