Swing - robienie 'zoom'a

0

Jak zrealizować zoom w panelu, w którym się dzieje animacja.

W tej chwili mam JPanel(jakiś tam wymiar), jest opakowany w JScrollPane.

  1. Po ruszaniu scrollem myszki, robie przybliżenie oddalenie, w taki sposób:
    każdy ruch scrolla to powiększenie/pomniejszenie rozmiaru JPanel o 0.2.
    Co robi mi problem taki, żę jak powiększe 5 razy, potem zmiejsze 5 razy, to już są inne rozmiary początkowego rozmiaru do aktualnego JPanela ?

  2. Przy robieniu tego zoom'a zawsze mi się ustawia obraz w lewym górnym rogu JPanelu, a chciałbym aby mi się ustawiał tam gdzie użytkownik miał wskaźnik myszy.
    Czy idzie też zrobić aby użytkownik np. trzymając PPM i poruszając myszką mógł zmieniać obraz wyświetlany(czyli poruszając się w JPanel a nie wskaźnikamia JScrollPane)

  3. Podobny problem do punktu 1, jak określić rozmiar zmieniających się elementów grafiki, aby było to naprawdę przybliżenie, a nie tylko przybliżenie obrazu bez innych elementów

0
  1. Mnożysz? Pamiętaj, że komputer używa systemu dwójkowego i ma inną dokładność niż dziesiętny. Zamiast 0.2 użyj np. 0.25, albo stablicuj wszystkie możliwe przybliżenia

  2. Musisz obliczać nową pozycję górnego lewego rogu i translatować tam przy rysowaniu. Ja w moim programie zapisuję tylko pozycję środka ekranu i translatuję o połowy szerokości i wysokości komponentu.
    Co do przesuwania: w MouseListenerze możesz kontrolować Scrollbary. Z JScrollPane pobierasz JScrollBary i kontrolujesz ich wartości.

1 użytkowników online, w tym zalogowanych: 0, gości: 1