मैं कैनवास से वर्तमान अनुवाद स्थिति कैसे प्राप्त करूं? मैं सामान खींचने की कोशिश कर रहा हूं जहां मेरे निर्देशांक रिश्तेदार (एक दूसरे के लिए) और पूर्ण (कैनवास) के मिश्रण हैं।कैनवास में वर्तमान अनुवाद स्थिति कैसे खोजें?
चलें कहते हैं कि मैं
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()
का उपयोग नहीं करना चाहता क्योंकि जिस तरह से मैं चीजों को चित्रित कर रहा हूं, यह थोड़ा मुश्किल है (और शायद गन्दा ...)
क्या इन मौजूदा निर्देशांक प्राप्त करने का कोई क्लीनर तरीका है?