¿Cómo obtengo la posición de traducción actual de un lienzo? Estoy tratando de dibujar cosas donde mis coordenadas son una mezcla de relativa (entre sí) y absoluta (a lienzo).¿Cómo encontrar la posición de traducción actual en Canvas?
digamos que yo quiero hacer
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
Esto funciona pero está sucia:
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);
La lona tiene un método getMatrix, tiene una setTranslate
pero sin getTranslate
. No quiero usar canvas.save()
y canvas.restore()
porque la forma en que estoy dibujando cosas es un poco complicado (y probablemente desordenado ...)
¿Hay alguna manera más clara de obtener estas coordenadas actuales?