gpt4 book ai didi

java - 拖动图像

转载 作者:行者123 更新时间:2023-11-30 08:37:04 25 4
gpt4 key购买 nike

我可以按住并拖动我的图像,但是,当我按下图像的中心时,当我拖动时光标总是会移动到图像的左上角

这就是图片的意思

我按下了图像的中心 enter image description here

当我拖动时,光标总是移动到图像的左上角 enter image description here

如何在拖动图片时确保光标位于图片的中心?

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class ChessGUI extends JPanel implements MouseListener, MouseMotionListener {
final int rows = 8;
final int cols = 8;
int x = 0;
int y = 0;
int carx= 0;
int cary =0;
ImageIcon car;

public void paintComponent(Graphics g) {
super.paintComponent(g);
for (int row = 0; row < 8; row++ ) {
for (int col = 0; col < 8; col++ ) {
x = 50*col;
y = 50*row;
if ( (row % 2) == (col % 2) )
g.setColor(Color.white);
else
g.setColor(Color.black);
g.fillRect(x,y,50,50);
}
}
car = new ImageIcon("resources/image/48/br.png");
car.paintIcon(this, g, carx, cary);
}

public ChessGUI() {
addMouseListener(this);
addMouseMotionListener(this);
}


public static void main(String[] args) {
JFrame frame = new JFrame("Chess");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setSize(420,450);
frame.setLocationRelativeTo(null);
frame.setResizable(true);
frame.setVisible(true);
frame.add(new ChessGUI());
}

@Override
public void mouseDragged(MouseEvent evt) {
carx = evt.getX();
cary = evt.getY();
repaint();
}

@Override
public void mouseMoved(MouseEvent arg0) {

}

@Override
public void mouseClicked(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {
int x = e.getX();
int y = e.getY();
}

@Override
public void mouseReleased(MouseEvent e) {

}

}

最佳答案

您的光标不会移动到左上角。发生的事情是您的图像将其左上角移动到光标所在的位置。这是因为图像的位置是通过指定其左上角坐标确定的,因此如果将光标坐标分配给图像的 x 和 y,则图像的左上角将绘制在光标所在的位置。

解决方案是获取图像的宽度和高度,将两个值除以 2,然后从光标坐标中减去,然后再将它们分配给图像的 x 和 y。这将使图像中心始终位于光标所在的位置。

更好的解决方案是,当您在图像上单击光标时,找到光标相对于图像的确切位置,然后相应地调整光标坐标,然后再将它们分配给图像的 x 和 y。

关于java - 拖动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com