[JAVA] Kontrolka, obrazek, wycinanie

0

Cześć, napotkałem ostatnio małą przeszkodę, i nie mam za bardzo pomysłu, z jakiej kontrolki swinga skorzystać, chciałbym osiągnąć efekt jak na dołączonym obrazku.
Czyli, wczytuje do tej kontrolki jakiś obraz, na którym będzie kilka różnych elementów widocznych, sam myszką zakreślałbym prostokąty (na podstawie mouse evenents) i chciałbym by obrazek zakreślony takim prostokątem był automatycznie wycinany z tego pierwszego obrazka i zapisywany.
Więc, jaka kontrolka?
user image

0

Więc, jaka kontrolka?
rotfl..
JPanel starczy.
btw: przeniesione? to mogłoby być w newbie...
Nie ma żadnej takiej "kontrolki" - tworzysz własny twór, rozszerzając JPanel...

0

No dobra, użyję jpanela z obiektem graphics, pozostaje pytanie, jak uzyskać ten wycinek obrazka obrysowany prostokątem (wspołrzędne lewy gorny - prawy dolny będą pobrane z mouse event)

0

implementuj i dodaj się jako MouseListener i MouseMotionListener...
zadeklaruj zmienne int x,y,tx,ty;
przy zdarzeniu mousePress zapisujesz po prostu pozycję kliknięcia

x = event.getX();
y = event.getY();

przy mouseDragg podobnie, tylko jeszcze robisz repaint()

tx = event.getX();
ty = event.getY();
this.repaint();

i w metodzie paint

public void paint(Graphics g)
{
     g.drawImage(twojObrazek,0,0,null);
     g.drawRect(x,y, tx-x, ty-y);
}

zgadujesz pewnie, ze teraz wspolrzedne x,y tx,ty to twoj zakreslony prostokat

teraz w actionListenerze jakiegos buttona czy cos, mozesz wyciąć tę częśc obrazka...

tx-x - to szerokosc zakreslonego prostokątu.. pamietaj, ze moze byc ujemna, jesli ktos kliknął myszką i przeciągnął myszką w lewo, lepiej zamienić je miejscami

if(x>tx)
{
   int tmp = x;
    x = tx;
   tx = tmp;
}


if(y>ty)
{
   int tmp = y;
    y = ty;
   ty = tmp;
}

(ten kod przy tym buttonie odpalaj)

0

Ok, wielkie dzięki, mam nadzieję, że teraz sobie poradzę.

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