Android path to array - read the points on a path?

前端 未结 3 1223
小鲜肉
小鲜肉 2020-12-14 03:08

Is there a way to read the points created when drawing a path? It seems silly to me that a path cannot be readable.

Or is it just better to manually write the curren

相关标签:
3条回答
  • 2020-12-14 03:32

    You mentioned finger position in your question. If you are drawing and using motion events, you could add the X and Y positions to an ArrayList during the event where all even indices are X's and odds are Y's. I used this in a couple of drawing apps I created. To recreate the path all you need is a for loop and Path.lineTo().

    Also if you have drawn the path to a view with a specific color, say Color.Black, you can use Bitmap.getPixels(...) and create an array {x0,y0,x1,y1,....xn,yn} based off a for loop like

    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++;
            }
        }
    }
    

    The array xy has all your coordinates.

    0 讨论(0)
  • 2020-12-14 03:37

    You can read as many points as you want from any path. Example how to read coordinates from the middle of path:

        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);
    

    You can pass any distance from the path start to get point coordinates.

    0 讨论(0)
  • 2020-12-14 03:47

    As far as I know, I think that you can't get previously added points, but you can extend Path class and create your own, override add methods, and then store that points in an array or a list or whatever you prefer.

    0 讨论(0)
提交回复
热议问题