Как мне получить текущую позицию перевода из Canvas? Я пытаюсь нарисовать вещи, где мои координаты представляют собой смесь относительных (друг к другу) и абсолютных (к холсту).
Допустим, я хочу сделать
canvas.translate(x1, y1);
canvas.drawSomething(0, 0); // will show up at (x1, y1), all good
// now i want to draw a point at x2,y2
canvas.translate(x2, y2);
canvas.drawSomething(0, 0); // will show up at (x1+x2, y1+y2)
// i could do
canvas.drawSomething(-x1, -y1);
// but i don't always know those coords
Это работает, но грязно:
private static Point getCurrentTranslate(Canvas canvas) {
float [] pos = new float [2];
canvas.getMatrix().mapPoints(pos);
return new Point((int)pos[0], (int)pos[1]);
}
...
Point p = getCurrentTranslate(canvas);
canvas.drawSomething(-p.x, -p.y);
У холста есть метод getMatrix, у него есть setTranslate
, но нет getTranslate
. Я не хочу использовать canvas.save()
и canvas.restore()
, потому что то, как я рисую, немного сложно (и, вероятно, грязно ...)
Есть ли более чистый способ получить эти текущие координаты?