数组的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] 米,向南
来自 String 的 NSURL 被截断,UIVideoEditorController 的视频路径上的点 Swift 2 iOS 8