/ / Rysuj na płótnie, płynnie skaluj i rysuj coś więcej - Java, Android, rysunek, Android-Canvas

Rysuj na płótnie, płynnie skaluj i rysuj coś więcej - java, android, rysunek, android-canvas

Mam problem ze skalowaniem bitmapy, a potemkorzystać z niego w Androidzie. Od samego początku mam własny widok, metodą onDraw rysuję coś na płótnie. Teraz chcę płynnie przeskalować ten rysunek (nadal na płótnie), a następnie narysować coś na tym płótnie, bez czyszczenia (na tym skalowanym rysunku). Jak to osiągnąć?

Próbowałem skalować cały widok z wbudowanymmechanizm animacji. Skalowanie jest płynne, ale nie jest tak, ponieważ skaluje cały komponent, nie tylko rysunek. Czy jest jakiś sposób płynnego skalowania rysunku, a następnie rysowania na nim?

Z góry dziękuję.

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz samodzielnie wdrożyć animację skalowania. Możesz zadzwonić invalidate() tak długo, jak trzeba skalować i mierzyć czas między onDraw() połączeń i oblicz wymaganą skalę skalowania. Samo skalowanie byłoby po prostu wykonane przez wywołanie do canvas.drawBitmap(bitmap, matrix, paint) gdzie macierz musi reprezentować skalowanie.

Inną metodą byłoby użycie ScaleAnimation gdzie Transformacja zawiera również matrycę, której możesz użyć.

Rysowanie na mapie bitowej jest po prostu gotowe: po prostu narysuj na tym samym płótnie onDraw() po narysowaniu skalowanego obrazu. Ponieważ tylko obraz jest skalowany, nowe rysowane elementy nie są skalowane.

Trzecie rozwiązanie może być nieco bardziej złożone. Możesz zamiast skalować mapę bitową, po prostu skalować płótno. Przeskaluj płótno, narysuj na nim mapę bitową i przywróć płótno. Następnie możesz narysować resztę.