保存路径以在画布上重用

时间:2017-03-14 12:24:06

标签: android canvas path

我在画布上工作。我允许这样的绘制路径:

// when ACTION_DOWN start touch according to the x,y values
    private void startTouch(float x, float y) {
        trazo.moveTo(x, y);
        mX = x;
        mY = y;
    }

    // when ACTION_MOVE move touch according to the x,y values
    private void moveTouch(float x, float y) {
        float dx = Math.abs(x - mX);
        float dy = Math.abs(y - mY);
        if (dx >= TOLERANCE || dy >= TOLERANCE) {
            trazo.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
            mX = x;
            mY = y;
        }
    }

    // when ACTION_UP stop touch
    private void upTouch() {
        trazo.lineTo(mX, mY);
        mCircles.add(new Trazo(trazo, colorActual, pincel));
        trazo = new Path();
    }

我想保存这个" trazo"在本地DB中稍后在画布上重用。 我怎么能保存它?我认为如果保存第一个点(x,y)和第二个点(x,y),它只会在两个点之间画一条线。我需要保存所有路径。 我不想将画布保存为图像,因为我想稍后再使用它并允许修改它。

3 个答案:

答案 0 :(得分:1)

你可以使用google Gson将你的trazo对象编组到json Gradle依赖:

compile 'com.google.code.gson:gson:2.8.0'

用法:

Gson gson = new Gson();
String trazoJson = gson.toJson(trazo);

然后,您可以将trazoJson保留在数据库中,然后您可以轻松地将trazoJson解放为trazo

Gson gson = new Gson();
Path trazo = gson.fromJson(trazoJson, Path.class);

答案 1 :(得分:0)

您可以尝试将路径保存为字符串,就像在svg中一样。 https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths

答案 2 :(得分:0)

最后,我保存了一个PointsList,然后迭代这个List来构造Path。