了解android.graphics.path并比较android.graphics.path值
我正在用Android开发一个应用程序,其中我必须获得Android.graphics。值并进行比较 考虑以下图像: 及 第一幅图像显示一条直线和生成的路径值。类似地,第二幅图像也显示了一条类似的直线,具有不同的路径值 我无法理解产生的价值。有人能解释一下生成的值到底意味着什么吗?我可以从屏幕坐标大致猜测路径值吗 另外,在我的应用程序中,我想比较路径值。上图中显示的线条类似。在我的应用程序中,我想比较它们并将它们渲染为相同的线条。我不只是比较线条,还会有曲线和所有这些可绘制的形状。为了进行比较,我是否必须首先规范化我的路径值(可能需要调用我当前的画布?),以便对不同的屏幕大小具有相同的效果 还有一种比较的方法要简单得多,那就是找到图形路径的质心。显然,与曲线等相比,直线的质心位置会有所不同,但这种比较不会如此精确。我想存储一些值,然后将生成的路径值与存储的值进行比较,同时比较质心,以便获得更好的精度。但为此,我需要理解生成的路径值 请帮助或指导!谢谢!:-) 编辑: 用于将路径值转换为字符串的代码。我的路径值存储在了解android.graphics.path并比较android.graphics.path值,android,Android,我正在用Android开发一个应用程序,其中我必须获得Android.graphics。值并进行比较 考虑以下图像: 及 第一幅图像显示一条直线和生成的路径值。类似地,第二幅图像也显示了一条类似的直线,具有不同的路径值 我无法理解产生的价值。有人能解释一下生成的值到底意味着什么吗?我可以从屏幕坐标大致猜测路径值吗 另外,在我的应用程序中,我想比较路径值。上图中显示的线条类似。在我的应用程序中,我想比较它们并将它们渲染为相同的线条。我不只是比较线条,还会有曲线和所有这些可绘制的形状。为了进行比
ArrayList
(称为pointsToDraw
)中。代码如下:
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
synchronized(pointsToDraw){
for(Path path : pointsToDraw)
{
stringPoints.add(String.valueOf(path));
}
}
TextView b1Text = (TextView) findViewById(R.id.GText);
for(String s : stringPoints)
{
b1Text.setText(s);
}
}
我认为,你不能为这个对象创建一个字符串,所以你得到了默认值:如果你签出,你会发现它实际上与
getClass().getName() + '@' + Integer.toHexString(hashCode())
或者用他们的话说
对象哈希代码的无符号十六进制表示形式
它只是对象的散列值,与路径(位置等)的任何特征没有直接可识别的连接。如果您真的想知道它是如何制作的,您可以找到该对象的hashCode()
函数,但我怀疑您不会看到这个问题的任何有趣之处
要清楚的是,当你说你想要比较“路径值”时,你似乎暗示你想要比较上面打印的值。我不知道你怎么会需要这个。您可能需要检查两条单独绘制/创建的线是否相同。不能将此哈希用于该目的,需要使用实际值,如开始/停止/角度/或类似的值。(我不确定路径中存在哪些成员,但您可以查找)路径对象是封装一系列几何路径的对象。如果您想通过编程将一条路径与另一条路径进行比较,那么我认为您必须首先在该
path
对象上使用pathmease
,以便提取所有坐标。使用PathMeasure
可以通过提供距离参数来获得路径所遵循的一系列坐标
然后,为了确定一条给定的路径在大小和沿屏幕的路径方面是否与另一条类似,我可能建议对它们都使用pathmease
,并比较它们产生的坐标,从而得到给定的增量距离参数。然后使用一些比较算法,这可能与确定每组比较坐标是否在彼此的距离内(考虑相对起始坐标)一样简单
因此,我无法帮助您使用算法,但作为一个起点,我认为您必须首先使用
PathMeasure
来检查和分析Path
中的数据。或者,您可能希望将它们渲染到位图,并使用某种图像识别库来比较这些位图,也许?我正在努力理解这个问题的第一部分;具体来说,你所说的“产生的价值”。字符串上显示的字符串是什么-是path.toString()的结果吗?@TrevorPage No.我使用的是string.valueof(path)
。我将编辑问题并添加用于生成字符串的代码。这不正是您看到路径的方式吗,因为它没有实际的字符串值或toString()
函数吗?它只是说“好吧,这是android.graphics.Path的一个对象,它当前在内存地址blahblahbalh”String.valueOf()
实际上给出了对象上.toString()
的结果(只要对象不是null
),其中@后面的数字是对象的散列。我的理解是,您要做的是识别路径
之间的相似性(看起来是由手势生成的)。我不认为比较从.toString()
返回的对象哈希对您有任何用处,但这是一个值得关注的有趣问题。@Nanne甚至我在某个地方读到过,我实际上无法找到android.graphics.Path(相当于字符串)的确切值,但接下来是我问题的第二部分,我需要比较路径值。基本值在应用程序培训期间存储,然后,将新生成的值与该基本值进行比较,并返回结果。我明白你的意思。我在比较台词的方法上出错了。正如您所写的,我想检查两条单独绘制/创建的线是否相同。但我需要一些指导。我确实检查了API,我没有发现对我有用的东西。我想这就是我需要使用的!我会处理这件事,然后再联系你