तो संक्षिप्त उत्तर और लंबा उत्तर है।
संक्षिप्त उत्तर यह है कि बिटमैप्स और कैनवास का घूर्णन एक आम कार्य होता है, जिसे आमतौर पर "घुमाने" कहा जाता है और आमतौर पर घूमने के लिए बिंदु को ले जाता है।
लंबा उत्तर यह है कि सभी 2 डी और 3 डी ग्राफिक्स मैट्रिक्स बीजगणित की एक चाल में भंग हो जाते हैं। प्रत्येक बिंदु के लिए: new_x = factor_1 * old_x + factor_2 * old_y + factor_3 ...
इन कारकों एक मैट्रिक्स में वास्तव में अच्छी तरह से काम करते हैं, और यही कारण है कि मैट्रिक्स बात इतना लोकप्रिय हो गया। एक अच्छी चाल है जहां आप एक साथ परिवर्तनों को चेन करते हैं, ताकि आप अपनी समस्याओं को "पुरानी कैनवास ले सकें, इसे स्थानांतरित करें ताकि स्पर्श बिंदु मूल हो, इसे घुमाएं, और फिर इसे स्थानांतरित करें ताकि मूल वापस आ जाए स्पर्श बिंदु। " या मैट्रिक्स एम = नया मैट्रिक्स()। पोस्टट्रांसलेट (-टouch_एक्स, -टouch_ई)। पोस्टस्टोट (360/20)। पोस्टस्ट्रांसलेट (touch_x, touch_y) प्रत्येक बार सर्कल के 1/20 वें स्थान पर घुमाने के लिए। फिर आप मैट्रिक्स को किसी भी फ़ंक्शन पर पास करते हैं जो "रूपांतरण" मैट्रिक्स लेता है।
अच्छी बात यह है कि आप केवल एक बार उस मैट्रिक्स के लिए सभी गणना करते हैं, और उसके बाद प्रत्येक बिंदु पर समान 4 गुणाओं और जोड़ने का एक समूह उपयोग करते हैं। वास्तव में, यह इतना आम है कि वीडियो कार्ड और इंटेल निर्देश दोनों हार्डवेयर में यह सामान करते हैं। आप अगले परिणाम प्राप्त करने के लिए उसी मैट्रिक्स द्वारा परिणामस्वरूप छवि को फिर से गुणा कर सकते हैं।
अब, यदि आप वास्तव में ग्राफिक्स हैक के लिए पूछ रहे हैं कि मैं कुछ स्मृति के साथ कुछ बेहद तेज़ असेंबली कोड में ऐसा कैसे कर सकता हूं, तो चाल घूर्णन और त्रुटियों को छोटी श्रृंखलाओं में चुनना है जहां आपको बफर की आवश्यकता नहीं है ।उदाहरण के लिए, एक साधारण 90 डिग्री रोटेशन पहले चार कोनों को स्वैप करेगा, फिर यह स्वैप करेगा (ऊपरी बाएं + 1 बाएं ऊपरी दाएं + 1 में चला जाता है जो नीचे दाएं - 1 बाएं में जाता है जो नीचे बाएं - 1 नीचे जाता है, जो ऊपरी बाएं + 1 में वापस चला जाता है)। ये चाल आमतौर पर केवल स्मृति बाधाओं के लिए मायने रखती हैं।
रास्ता बहुत अधिक जानकारी। अपनी समस्या के बारे में हमें और बताएं।
स्रोत
2011-10-05 07:02:51
रोटेशन लागू करने के लिए मैट्रिस का उपयोग करें। –
http://stackoverflow.com/questions/4166917/android-how-to-rotate-a-bitmap-on-a-center-point – Ronnie
का सटीक डुप्लिकेट मैं आपको @Emiam उत्तर उपयोगकर्ता से सलाह देता हूं, यह CPU का उपयोग नहीं करेगा मैट्रिक्स के रूप में करते हैं। –