Poruszająca się zawartość w canvasie lub czymś innym

0

Witam chcę narysować taką mapkę genealogiczną która będzie cała usiana w sześciokątach foremnych i mój problem polega na tym że znaczna jej część wychodzi poza rozmiar płótna (duuuuża rozdzielczość) więc jak zrobić przesuwanie jej myszką tak jak w google maps albo coś Język

Pozdrawiam i dzięki z góry

1

możesz zrobić "widok" (prostokątne okienko o określonych współrzędnych, i wymiarach takich jak Canvas), i poruszać tym widokiem jak kamerą. Wtedy wykonujesz translację współrzędnych (Pseudokod):

DLA KAŻDEGO obiektu w liście obiektów:
x_rysowania = x_obiektu - x_widoku 
y_rysowania = y_obiektu - y_widoku 
JEŚLI obiekt znajduje się poza widokiem TO nie rysuj
JEŚLI NIE to rysuj obiekt(x_rysowania, y_rysowania)

technicznie to łapiesz odpowiednie eventy mousedown, mousemove, mouseup. W mousedown ustawiasz flagę "przeciąganie", w mouseup wyłaczasz ją. W mousemove, jeśli flaga "przeciąganie" jest ustawiona to przesuwasz okno kamery (=ustawiasz odpowiednie współrzędne widoku)

0

Aha czyli poruszam kamerą a nie obrazkiem?

1

po prostu masz dwa układy odniesienia

  • układ współrzędnych świata 0,0
  • układ współrzędnych kamery/widoku (x_kamery, y_kamery)

i jeśli masz obrazki, które mają współrzędne w układzie świata, to musisz je skonwertować na współrzędne kamery:
http://www.mathematics-online.org/inhalt/aussage/aussage443/
Przy czym "kamera" rusza się od strony matematycznej, ale od strony wyglądu cały czas wyświetlasz jej obraz w tym samym miejscu (na nieruchomym Canvasie)

0

Czyli jakby podsuwam mape pod widok canvasa?

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