Graphics - elementy znikają po zmianie okna

0

Witam,
Chce napisać prosty aplet do rysowania/malowania. Na początek oczywiście chcę napisać klasy odpowiedzialne za rysowanie prostych figur geometrycznych. I tutaj pojawia się problem. Rozumiem, że do rysowania po komponentach służy metoda paint()/paintComponent() ale to sprawia mi pewne kłopoty. Bawiłem się też z getGraphics() ale tutaj też są problemy.
Moje pytanie brzmi. Na jakiej zasadzie tak właściwie działa metoda getGraphics i dlaczego po naryzowaniu np linii ta znika, np. po zmianie rozmiaru komponentu. Czy getGraphics zwraca współrzędne komponentu czy współrzędne na ekranie po których można rysować? Dlaczego nie zapamiętuje tych elementów? Nie chcę kopiować danego obszaru przy jakiejkolwiek zmianie bo to raczej niemądre rozwiązanie.
Co do metody paint()/paintComponent(). Metody te są wywoływane wtedy "kiedy trzeba" czyli m.in. przy zmianie rozmiaru, polozenia komponentu. Czy to jest wlasciwie miejsce na rysowanie? Jestem trochę zniechęcony do używania tej metody bo musiałaby tutaj znaleźć się duża ilość kodu czego chcę uniknąć.

Efekt jaki chcę osiągnąć na początku to po prostu:

  1. Zapamiętywanie położenia po którym ma się odbywać rysowanie/malowanie. W tej chwili jeżeli pobiorę obiekt graphics przez getGraphics i na nim pracuję to po zmianie wielkości okna w którym znajduje się komponent rysowanie odbywa się na poprzednim położeniu komponentu.
  2. "Nie zapominanie" wcześniej narysowanych elementów.
0

Z tego co wiem, to metoda paint jest wywoływana za każdym razem, kiedy zaszła zmiana w obszarze rysowania, np. przesuniecie okna, zasłonięcie, odsłonięcie, zwinięcie itp. Nie ma tu żadnej 'pamięci'. Metoda paint() zawsze rysuje na pustym oknie. Musisz trzymać gdzieś informacje o narysowanych obiektach i rysować je przy każdym wywołaniu metody paint().

0

Albo skorzystac z BufferedImage, ktory to juz troszczy sie o odswiezanie.

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