【发布时间】:2011-03-11 23:11:56
【问题描述】:
有没有办法读取绘制路径时创建的点?在我看来,路径无法读取是很愚蠢的。
还是手动将当前手指位置写入数组更好?
谢谢
【问题讨论】:
有没有办法读取绘制路径时创建的点?在我看来,路径无法读取是很愚蠢的。
还是手动将当前手指位置写入数组更好?
谢谢
【问题讨论】:
您可以从任何路径读取任意数量的点。 示例如何从路径中间读取坐标:
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);
您可以从路径起点经过任意距离来获取点坐标。
【讨论】:
Path
据我所知,我认为您无法获得以前添加的点,但您可以扩展 Path 类并创建自己的类,覆盖 add 方法,然后将这些点存储在数组或列表或任何您想要的更喜欢。
【讨论】:
您在问题中提到了手指位置。如果您正在绘制和使用运动事件,您可以在事件期间将 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 有你所有的坐标。
【讨论】: