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