Android-путь к массиву - читать точки на пути?

Есть ли способ прочитать точки, созданные при рисовании пути? Мне кажется глупым, что путь не может быть доступен для чтения.

Или просто лучше вручную записать текущее положение пальца в массив?

спасибо

Ответы

Ответ 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);

Вы можете пройти любое расстояние от начала пути, чтобы получить координаты точки.

Ответ 2

Насколько я знаю, я думаю, что вы не можете получить ранее добавленные баллы, но вы можете расширить класс Path и создать свои собственные, переопределить методы добавления, а затем сохранить эти точки в массиве или списке или что угодно предпочитают.

Ответ 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 имеет все ваши координаты.