Ben*_*min 5 android android-canvas
我正在尝试开发一个Android应用程序(目标版本2.1/2.2),它需要跟踪路径x,y坐标点,并且我很难.应用程序的基础知识类似于FingerPaint,除了首先一个单独的线程使用Path drawable绘制一些线条到画布上,然后用户尝试绘制这些线条,用不同的Paint和Path对象完全覆盖它们.用户将使用比计算机更大的Paint画笔.第一个自动绘制的线使用类似于LunarLander示例应用程序的单独线程.由于线条不仅仅是直线,我正在努力寻找一种方法来执行以下操作:1.跟踪自动点数绘制.我意识到我提供基本的点,但使用path.lineTo和path.arcTo与path.quadTo真正搞清楚所有的点.
我理想的方法显然不存在会是什么样的
autoPath.getDrawnPoints().coveredBy(userPath.getDrawnPoints()) == true?对此有任何帮助将不胜感激,谢谢.-ben
我只能说: Path 依赖于Java 的GeneralPath,而 Java 又依赖于 Path2dFloat。
如果我查看源代码,它有一个 packageReadabletransient float floatCoords[];
因此,我看到获取传入的坐标的唯一方法更像是一种黑客而不是解决方案。无论如何,这是:
public float[] getPointsFromPath(GeneralPath path){
Class<?> clazz = path.getClass();
while(true){
clazz = clazz .getSuperclass();
if (clazz == Path2D.Float.class){
break;
}
}
try {
Field f = clazz.getDeclaredField("floatCoords");
if (f != null){
if (!f.isAccessible()){
f.setAccessible(true);
}
Object o = f.get(path);
if (o != null && o instanceof float[]){
float[] drawnPoints = (float[])o;
Log.d("TAG", drawnPoints);
return drawnPoints;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2885 次 |
| 最近记录: |