Làm cách nào để có được vị trí dịch hiện tại từ Canvas? Tôi đang cố gắng để vẽ những thứ mà tọa độ của tôi là một sự kết hợp của tương đối (với nhau) và tuyệt đối (để canvas).Cách tìm vị trí dịch hiện tại trong Canvas?
phép nói rằng tôi muốn làm
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
này hoạt động nhưng là bẩn:
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);
Các canvas có một phương pháp getMatrix, nó có một setTranslate
nhưng không getTranslate
. Tôi không muốn sử dụng canvas.save()
và canvas.restore()
vì cách tôi vẽ mọi thứ hơi phức tạp (và có thể lộn xộn ...)
Có cách nào để có được các tọa độ hiện tại không?