Jest więc krótka odpowiedź i długa odpowiedź.
Krótka odpowiedź brzmi, że obracanie bitmap i płótna jest powszechną funkcją, zwykle nazywaną "obracaniem" i zwykle przyjmuje punkt, w którym ma się obracać.
Dłuższą odpowiedzią jest to, że cała grafika 2D i 3D przekształca się w trik algebry macierzy. Dla każdego punktu: new_x = factor_1 * old_x + factor_2 * old_y + factor_3 ...
czynniki te działają bardzo ładnie w matrycy, i dlatego rzeczą matryca się tak popularne. Jest fajna sztuczka, w której łączysz transformacje ze sobą, więc możesz określić swoje problemy jako "weź stare płótno, przesuń je tak, aby dotknięty punkt był początkiem, obróć go, a następnie przesuń tak, aby pochodzenie powróciło w dotknięty punkt. " Lub Matrix m = new Matrix(). PostTranslate (-touch_x, -touch_y) .postRotate (360/20) .postTranslate (touch_x, touch_y), aby za każdym razem obrócić go o 1/20 okręgu. Następnie przekazujesz macierz do dowolnej funkcji, która przyjmuje matrycę "transformacji".
Fajną rzeczą jest to, że wykonujesz wszystkie obliczenia dla tej macierzy tylko jeden raz, a następnie używasz tych samych 4 multiplikacji w każdym punkcie i pęczku dodawania. W rzeczywistości jest to tak powszechne, że karty graficzne i zestaw instrukcji Intela dokonują tych rzeczy w sprzęcie. Możesz także po prostu pomnożyć wynikowy obraz ponownie za pomocą tej samej matrycy, aby uzyskać następny.
Teraz, jeśli naprawdę pytasz o hackę graficzną tego jak to zrobić w jakimś niesamowicie szybkim kodzie montażowym bez pamięci, to chodzi o wybieranie obrotów i błędów w małe łańcuchy, w których nie potrzebujesz bufora .Na przykład, prosty obrót o 90 stopni zamieniłby najpierw cztery rogi, następnie zamieniłby się (górny lewy + 1 lewy przechodzi w prawy górny + 1 dół, który przechodzi w dolne prawe - 1 lewy, który przechodzi w dolny lewy - 1 dół, który wraca do górnego lewego + 1). Te sztuczki zwykle mają znaczenie tylko dla ograniczeń pamięci.
Zbyt wiele informacji. Powiedz nam więcej o swoim problemie.
Użyj macierzy, aby zastosować obrót. –
Dokładny duplikat http://stackoverflow.com/questions/4166917/android-how-to-rotate-a-bitmap-on-a-entercentrum – Ronnie
Polecam użytkownikowi odpowiedź @Emiam, to nie będzie używać procesora tak jak Matrix. –