2013-04-12 11 views
6

im próbuje nauczyć rysowanie mapy bitowej na płótnie z wykorzystaniemAndroid: Korzystanie matrycę do rysowania map bitowych

drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint); 

bo potrzebna jest jedna z moich PNG w celu zwiększenia jego wielkości prawie każdą klatkę, udało mi się zrobić z

Matrix matrix=new Matrix(); 
matrix.setScale(0.001f,0.001f); 

i działa to dobrze dla mnie. Ale mam problem, jeśli chodzi o umieszczenie obrazu we właściwych współrzędnych. Myślałem, że któryś z nich zrobi to:

matrix.setTranslate (x, y); matrix.postTranslate (x, y);

Ale w tym miejscu obraz jest zawsze rysowany na współrzędnych 0,0. przed moim skalowania zdjęć i było w porządku z użyciem

canvas.drawBitmap(bmp,x,y,paint); 

gdzie mogę określić punkt, aby można wyciągnąć. Czy mogę to zrobić za pomocą macierzowej wersji drawBitmap? lub jak inaczej powinienem zmienić rozmiar mojego obrazu tak często?

Odpowiedz

10

Użyj macierzowej wersji bitmapy rysowania. Ważne jest, aby zrobić to we właściwej kolejności. Zacznij od macierzy tożsamości. Następnie skaluj go według dowolnego współczynnika, który ma być używany po skale. To sprawi, że będzie rosło, ale bez zmiany pochodzenia. Przetłumacz go, używając funkcji postTranslate, która przesunie ją w lewo/prawo/w górę/w dół. Następnie narysuj bitmapę na płótnie, przekazując ją macierzy. Skaluje i przenosi bitmapę przez macierz przed jej skopiowaniem.

+0

Thx, to działało – Anderiel