博客
关于我
Android开发之PathMeasure的基本用法
阅读量:788 次
发布时间:2019-03-24

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

PathMeasure测量类

PathMeasure是Android图形库中用于测量路径长度的强大工具,支持闭合和非闭合路径的测量。它能够帮助开发者快速获取路径数据,节省手动计算的时间。这一功能在绘图、游戏开发等场景中都有广泛应用。

forceClosed参数的作用

PathMeasure(path, false);默认情况下,measure.isClosed()返回的值与path的闭合状态有关。如果想要强制闭合路径,无论Path本身是否闭合,可以通过forceClosed属性来处理。例如,forceClosed=true时,measure.getLength()将包括路径的闭合部分的测量结果。这一功能特别有用,当路径并非闭合时,仍能完整测量所有边线。

我们来看看实际案例

代码示例:

import android.content.Context;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.util.Log;
import android.view.View;

public class CustomView extends View {

private Paint paint;
private int mViewHeight;
private int mViewWidth;

public CustomView(Context context) {      super(context);      paint = new Paint();      paint.setColor(Color.RED);      paint.setStyle(Paint.Style.STROKE);      paint.setStrokeWidth(10);  }  @Override  protected void onSizeChanged(int w, int h, int oldw, int oldh) {      super.onSizeChanged(w, h, oldw, oldh);      mViewHeight = h;      mViewWidth = w;  }  @Override  protected void onDraw(Canvas canvas) {      super.onDraw(canvas);      canvas.translate(mViewWidth / 2, mViewHeight / 2);      Path path = new Path();      path.lineTo(0, 200);      path.lineTo(200, 200);      path.lineTo(200, 0);      PathMeasure measure1 = new PathMeasure(path, false);      PathMeasure measure2 = new PathMeasure(path, true);      Log.i("---length1---", measure1.getLength() + "");      Log.i("---length2---", measure2.getLength() + "");      canvas.drawPath(path, paint);  }

}

运行效果图:

接下来看看PathMeasure的其他方法

nextContour属性

代码示例:

Path path = new Path();

path.addRect(-200, -200, 200, 200, Path.Direction.CW);
path.addRect(-100, -100, 100, 100, Path.Direction.CW);

PathMeasure measure = new PathMeasure(path, false);

float length1 = measure.getLength();
boolean nextContour = measure.nextContour();
float length2 = measure.getLength();

运行效果图:

截取路径片段

代码示例:

Path path = new Path();

path.addRect(-200, -200, 200, 200, Path.Direction.CW);

PathMeasure measure = new PathMeasure(path, false);

float length = measure.getLength();

Path path1 = new Path();

measure.getSegment(200, 600, path1, false);
measure.getSegment(200, 600, path1, true);

运行效果图:

getPosTan方法

代码示例:

Path path = new Path();

path.addCircle(0, 0, 300, Path.Direction.CW);

PathMeasure measure = new PathMeasure(path, false);

float[] pos = new float[2];
float[] tan = new float[2];

measure.getPosTan(measure.getLength() / 4, pos, tan);

运行效果图:

通过PathMeasure可以轻松获取路径的直角斜率和位置信息,这在绘图、物理仿真等场景下都有实用价值。

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

你可能感兴趣的文章
python+pytest接口自动化 —— 参数关联
查看>>
python+pytest接口自动化 —— 参数关联
查看>>
Python+pytest接口自动化 —— 接口测试基础
查看>>
python+pytest接口自动化 —— 自动化用例编写思路 (使用pytest编写一个测试脚本)
查看>>
Python+pytest接口自动化之cookie绕过登录(保持登录状态)
查看>>
python+pytest接口自动化:接口测试
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
Python+requests+unittest执行接口自动化测试详情
查看>>
python+requests+unittest执行自动化接口测试!
查看>>
Python+Requests编码识别Bug
查看>>
python函数编写_[零基础学python]传说中的函数编写条规
查看>>
Python+selenium —— UI自动化之鼠标操作
查看>>
python函数注释,参数后面加冒号:,函数后面的箭头→是什么?
查看>>
Python+Selenium+Threading进行兼容性测试
查看>>
Python+selenium+unittest的GUI自动化框架实现
查看>>
python函数拟合不规则曲线_Python计算&绘图——曲线拟合问题(转)
查看>>
python函数定义的基本格式_零基础学python-2.19 定义函数、调用函数与默认参数
查看>>
Python+Selenium之数据驱动测试的实现
查看>>
python函数定义与使用+返回值简解
查看>>
Python+Selenium登录
查看>>