数组的Android路径 - 读取路径上的点?

Posted

技术标签:

【中文标题】数组的Android路径 - 读取路径上的点?【英文标题】:Android path to array - read the points on a path? 【发布时间】:2011-03-11 23:11:56 【问题描述】:

有没有办法读取绘制路径时创建的点?在我看来,路径无法读取是很愚蠢的。

还是手动将当前手指位置写入数组更好?

谢谢

【问题讨论】:

【参考方案1】:

您可以从任何路径读取任意数量的点。 示例如何从路径中间读取坐标:

    PathMeasure pm = new PathMeasure(myPath, false);
    //coordinates will be here
    float aCoordinates[] = 0f, 0f;

    //get coordinates of the middle point
    pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null);

您可以从路径起点经过任意距离来获取点坐标。

【讨论】:

pm.getPosTan(pm.getLength() * 0.5f, aCoordinates, null);返回布尔值然后我们是点??? @JhansiKiRani,他就在那儿说://坐标将在这里。所以在一个坐标中。 如何使用此答案方法获得用手指绘制的直线上的点?假设它是未知的,但起点保存在Path @dan 假设你想要 11 个点(10 个相等的段):``` // 开头:pm.getPosTan(pm.getLength() * 0.0f, aCoordinates, null); // 第一点:pm.getPosTan(pm.getLength() * 0.1f, aCoordinates, null); // 第二点:pm.getPosTan(pm.getLength() * 0.2f, aCoordinates, null); // 第三点:pm.getPosTan(pm.getLength() * 0.3f, aCoordinates, null); // 等等 // 最后一点 pm.getPosTan(pm.getLength(), aCoordinates, null); ``` 感谢您的回复。那么那么aCoordinates中的坐标会变成对应的距离呢?【参考方案2】:

据我所知,我认为您无法获得以前添加的点,但您可以扩展 Path 类并创建自己的类,覆盖 add 方法,然后将这些点存储在数组或列表或任何您想要的更喜欢。

【讨论】:

谢谢,我就是这么想的。我认为扩展类不会增加任何东西,而不仅仅是将 onMyTouchEvent 中的点 (x, y) 添加到 ArrayList 中。【参考方案3】:

您在问题中提到了手指位置。如果您正在绘制和使用运动事件,您可以在事件期间将 X 和 Y 位置添加到 ArrayList,其中所有偶数索引都是 X,赔率是 Y。我在我创建的几个绘图应用程序中使用了它。要重新创建路径,您只需要一个 for 循环和 Path.lineTo()。

此外,如果您使用特定颜色(例如 Color.Black)绘制了视图的路径,则可以使用 Bitmap.getPixels(...) 并创建一个数组 x0,y0,x1,y1,... .xn,yn 基于类似的 for 循环

int i = 0;
for(int y = 0; y < bitmap.getHeight(); y++)
    for(int x = 0; x < bitmap.getWidth(); x++)
        if(pixels[y*bitmap.getWidth()+x] == Color.BLACK)
            xy[i] = x;
            i++;
            xy[i] = y;
            i++;
        
    

数组 xy 有你所有的坐标。

【讨论】:

以上是关于数组的Android路径 - 读取路径上的点?的主要内容,如果未能解决你的问题,请参考以下文章

2022-01-10:路径交叉。给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南

算法学习——动态规划之点数值三角形的最小路径

BZOJ1143: [CTSC2008]祭祀river

来自 String 的 NSURL 被截断,UIVideoEditorController 的视频路径上的点 Swift 2 iOS 8

路径中的点“./”“../”“/”代表的含义

天天爱跑步:桶(就是数组)/权值线段树(没打)