Android matrix rotation of bitmap change center -
मुझे bitmap रोटेशन के साथ एक अजीब समस्या है यह मेरा कोड है:
में onDraw विधि
int cx_gear_big = (getWidth () - gear_big.getWidth ()) & gt; & gt; 1; Int cy_gears_big = (getHeight () - गियर_बिग.टेटइट ()) & gt; & gt; 1; Canvas.drawBitmap (घुमाएगी गियर (गियर_बिग, बिगगियरएन्जेल), सीएक्स_जीयर_बिग, साइ_ गियर्स_बिग, नल); यह मेरी विधि है जो घुमाया रिटर्न बिटमैप :
सार्वजनिक स्थिर बिटमैप रोटेट गियर (बिटमैप स्रोत, इंट एंगल) {मैट्रिक्स मैट्रिक्स = नया मैट्रिक्स (); matrix.postRotate (कोण); वापसी बिटमैप.सेंटबाइटमैप (स्रोत, 0, 0, source.getWidth (), source.getHyight (), मैट्रिक्स, सत्य); } मेरे कैनवास में कुछ गियर हैं, लेकिन यह वास्तव में कोई बात नहीं है।
मेरी समस्या यह है:
जब मैं अपना बिटमैप (एक गियर) घूमता हूं तो वह नीचे चलता रहता है और (यह रोटेशन के कोण पर निर्भर करता है) तो यह वापस आता है ... इस मामले में मेरी समस्या कहां हो सकती है?
UPD: Bitmap का अनुवाद रैखिक नहीं है यह उछलने जैसा है।
इस समस्या को सुलझाने का आदर्श तरीका रोटेशन से पहले मैट्रिक्स अनुवादित है और इसे वापस अनुवादित करें। कोड उदाहरण:
<पूर्व> मैट्रिक्स एम = नया मैट्रिक्स (); फ्लोट पीएक्स = मिलन-विथथ () / 2; फ्लोट पीवाई = हाईट () / 2; M.postTranslate (-btmap.getWidth () / 2, -btmap.getHeight () / 2); m.postRotate (कोण); M.postTranslate (पीएक्स, पीए); Canvas.draw बिटमैप (बिटमैप, एम, नल);
Comments
Post a Comment