Skocz do zawartości
PiotrekK

Wyświetlanie tylko części obrazka?

    Rekomendowane odpowiedzi

    Witam.

    Jestem na etapie tworzenia własnej gry. Stworzyłem już mniej więcej jej silnik i teraz zabieram się za graficzne udoskonalenie ;)

    Moim pytaniem jest: czy da się wyśiwetlić tylko daną część jednego obrazka?

    Przewiduję, że nie jest to zbytnio zrozumiałe więc pokażę przykład:

    Mam taki oto obrazek:

    fetch.php?w=&h=&cache=cache&media=http%3A%2F%2Fwww.frank-buss.de%2Fluaplayer%2Ftutorial%2Ffigure.png

    Jest to obrazek zawierający poszczególne klatki animacji. Chciałbym w danym momencie wyświetlić tylko jedną klatkę.

    jak to zrobić?

    Z góry dzięki za odpowiedzi!

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    można to zrobić tak, bierzesz obrazek źródłowy z wszystkimi klatkami i wycinasz z niego poszczególne klatki (nowe obrazki) dodając jest do animacji, z pomocą przyjdzie klasa Rect

    Rect dst = new Rect();//format nowej mapy
    Rect src = new Rect();//położenie klatki w źródłowym obrazku z wszystkimi klatkami]
    klatka = Bitmap.createBitmap(szerokość klatki, wysokość klatki , Config.RGB_565);//klatka wydobyta ze zbioru
    Canvas canvas = new Canvas(klatka);
    canvas.drawBitmap(Bitmap, src, dst, null);

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    można to zrobić tak, bierzesz obrazek źródłowy z wszystkimi klatkami i wycinasz z niego poszczególne klatki (nowe obrazki) dodając jest do animacji, z pomocą przyjdzie klasa Rect

    Rect dst = new Rect();//format nowej mapy
    Rect src = new Rect();//położenie klatki w źródłowym obrazku z wszystkimi klatkami]
    klatka = Bitmap.createBitmap(szerokość klatki, wysokość klatki , Config.RGB_565);//klatka wydobyta ze zbioru
    Canvas canvas = new Canvas(klatka);
    canvas.drawBitmap(Bitmap, src, dst, null);

    Dzięki.

    A co ma zawierać dst i src?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Nie żeby sposób zawadaki'ego nie był poprawny, ale gdybyś nie ogarniał czegoś to proponuje ten tutorial : 2D Sprite Animation in Android on Android Development jako że jest on analogiczny do tego co chcesz zrealizować (odbijająca się piłeczka)

    Pozatym można to chyba zrobić prościej :

    Bitmap klatka = Bitmap.createBitmap (Bitmap bitmap, int x, int y, int width, int height);
    

    i później rysujesz "klatka" :) W miejsce x,y wstawiasz położenie lewego górnego rogu klatki w oryginalnym sprite'cie a za width i height wstawiasz jej rozmiar ;]

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    Dzięki.

    A co ma zawierać dst i src?

    obiekt klasy Rect z przypisanymi wartościami

    masz cały obrazek z klatkami chcesz wyciąć jedna to podajesz koordynaty dwóch wierzchołków kwadratu:

    góra, lewo oraz dolny, prawy koordynaty źródłowe nie mogą wykraczać poza granice wyznaczone przez rozmiar obrazka źródłowego

    zapis @Losiowaty jest szybszy, choć w sumie robi to samo

    Edytowane przez zawadaki

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x