Avatar billede n1ghtmr Nybegynder
07. januar 2005 - 17:52 Der er 1 kommentar og
1 løsning

Præcise muse koordinater - tegn på bufferedimage

Ok, kort sagt har jeg en JFrame hvor jeg "adder" en mouselistener og en menubar:

MyFrame.addMouseListener(this);
MyFrame.setJMenuBar(menuBar);

Heri vil jeg gerne tegne et bufferedimage -
(i paintComponent ligenu):

//WIDTH og HEIGHT er skærmens opløsning.
g.drawImage(img, 0, 0, WIDTH, HEIGHT, this);

Dette virker fint. Nu vil jeg gerne tegne på mit billed så jeg f.eks. kan markere et rektangel. Jeg kan ikke lige pt. finde ud af at fjerne ting på mit image (uden at repainte) så jeg har:

public void mouseClicked(MouseEvent e)
    {
        if (px == 0 || py == 0)
        {
            px = e.getX();
            py = e.getY();
        }
        else
        {
            Graphics2D gc = img.createGraphics();
            gc.setColor(Color.black);
            gc.drawRect(px,py,e.getX()-px,e.getY()-py);
            repaint();

            py = 0;
            px = 0;
        }

Der laver et rektangel når man har klikket 2 gange. Problemet her er at den ikke begynder at tegne der hvor musen befandt sig men ca. 50 pixels under i y retningen. Jeg vil tro det har noget at gøre med de relative positioner af Frame of billed men kan ikke lige finde en holdbar løsning.

Mvh.Morten
Avatar billede snoop_one Nybegynder
07. januar 2005 - 22:32 #1
Det kunne nok skyldes at det er fordi du har sat mouselisteneren til framen og ikke til dit billede. Den forskydning skulle nok passe med højden af din menuBar. Så prøv enten at tilføje billedet til f.eks. Jpanel og tilføje mouselisteneren til den i stedet.

En anden løsning (rettere et hack) kunne være, at når du tegner med gc.draw at modregne menubarens højde.
Avatar billede n1ghtmr Nybegynder
12. september 2005 - 16:46 #2
lukker, fandt en løsning
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester