2011-07-13 12 views
9

Gdy chcę narysować BitmapDrawable na płótnie w Androidzie, istnieją dwie możliwości, które robią to samo i nie wiem który z nich wolą:Android: Różnica między canvas.drawBitmap i BitmapDrawable.draw?

  1. Korzystanie canvas.drawBitmap() i wyodrębnić Bitmapa z losowania za pomocą getBitmap()

  2. Używanie drawable.draw (canvas), przekazanie płótna jako argumentu do losowania.

Używam teraz pierwszej opcji, ale wydaje się ona całkowicie arbitralna, ponieważ nie widzę żadnej różnicy.

Dzięki za twoje odpowiedzi

Odpowiedz

9

Nigdy nie rób opcji numer 1 tak, jak to robisz. Zamiast tworzyć bitmapę z losowania za każdym razem, gdy chcesz ją narysować, najpierw utwórz mapę bitową. To znaczy, nie twórz Drawable, jeśli zamierzasz narysować bitmapę. Utwórz bitmapę w następujący sposób:

mBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.myImage); 
mBitmap = Bitmap.createScaledBitmap(mBitmap, width, height, true); 

I to jest coś, co robisz tylko raz. Potem po prostu rysuj, jak robisz (canvas.drawbitmap()).

Jeśli chodzi o opcję numer 2, robisz to poprawnie.

Teraz są pewne różnice. Opcja 1 jest szybsza do rysowania i zwykle jest dobra dla obrazów tła. Istnieje znacząca zmiana w FPS w zależności od tego, czy rysujesz bitmapę, czy rysujesz. Mapy bitowe są szybsze.

Opcja 2 to droga, którą można przejść, jeśli potrzebne są takie rzeczy jak skalowanie, przenoszenie i inne rodzaje manipulacji obrazem. Nie tak szybko, ale nie ma innej opcji, jeśli chcesz zrobić którąś z wymienionych rzeczy.

Mam nadzieję, że to pomoże!

+0

Dziękuję za odpowiedź, to ma sens :) – Sven

Powiązane problemy