8
如何從Canvas獲取當前翻譯位置?我試圖繪製我的座標是相對(彼此)和絕對(對畫布)混合的東西。如何在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()
,因爲我畫的東西的方式有點棘手(也許是凌亂的......)
有沒有更簡潔的方式來獲得這些當前座標?