में बिटमैप के साथ-साथ घूर्णन, अनुवाद, और स्केलिंग मैं एक तस्वीर दिखाने की कोशिश कर रहा हूं, जिसे ज़ूम और पैन किया जा सकता है, और यह एक कंपास पढ़ने के साथ घूमता है। नीचे दिए गए कोड के साथ, सभी तीन कार्य एक तरह का काम करते हैं, लेकिन वे एक-दूसरे को प्रभावित करते हैं।
1. घुमाएँ स्क्रीन के केंद्र के चारों ओर
2. स्केल केंद्र में चित्र के एक ही हिस्से छोड़ने
3. पैन चित्र में वांछित जगह पर:एंड्रॉइड कैनवास
यहाँ मैं क्या हासिल करना चाहते है
यहाँ क्या वास्तव में नीचे दिए गए कोड के साथ हो रहा है: के रूप में इरादा
1. रोटेशन काम करता है, स्क्रीन
2. स्केलिंग कार्यों के केंद्र के चारों ओर है, लेकिन यह तस्वीर का केंद्र के चारों ओर मापता
3. अनुवाद केवल तभी angle
शून्य है इरादा के रूप में है, अन्यथा यह एक गलत दिशा
// the center of the view port
float centerX = screen.right/2;
float centerY = screen.bottom/2;
Matrix m = new Matrix();
m.preRotate(angle, centerX, centerY);
m.preScale(mScaleFactor, mScaleFactor, centerX, centerY);
// scaling the amount of translation,
// rotating the translation here gave crazy results
float x = mPosX/mScaleFactor;
float y = mPosY/mScaleFactor;
m.preTranslate(x, y);
canvas.drawBitmap(pic, m, null);
में आगे बढ़ रहा है, तो मैं पहली बार का अनुवाद, और बाद में बारी बारी से काम करता है, अनुवाद के रूप में इरादा काम करता है लेकिन रोटेशन के केंद्र के चारों ओर नहीं है दृश्य पोर्ट अब और।
मैं तीनों परिवर्तनों को कैसे लागू कर सकता हूं, उनके बिना एक दूसरे को प्रभावित कर सकता हूं?
अनुवाद घूर्णन केवल घूर्णन को ऑफ़सेट करने के लिए प्रतीत होता है, लेकिन मुझे यह भी महसूस होता है कि मैं यही हूं घ। एंड्रॉइड मैट्रिस 3x3 हैं, तो मुझे लगता है कि वे पहले से ही एफ़िन ट्रांसफॉर्मेशन हैं? – modemuser
तो शायद उन प्रीरोटेट, प्रीस्केल विधियों का उपयोग करने के बजाय मैट्रिक्स को सीधे सेट करने का प्रयास करें? तो आपका मैट्रिक्स – Dan
से ऊपर की पोस्ट में संपादन जैसा कुछ होना चाहिए, इस मैट्रिक्स के साथ, पैनिंग काम करता है, लेकिन स्केलिंग भी तस्वीर को घुमाता है, रोटेशन तस्वीर को भी स्केल करता है, और रोटेशन तस्वीर के कोने के आसपास होता है। यह व्हाक-ए-मोल की तरह है, लेकिन आपके इनपुट के लिए धन्यवाद। – modemuser