gpt4 book ai didi

Java 更好地拖动图像和重叠图像检测

转载 作者:行者123 更新时间:2023-11-30 07:24:36 25 4
gpt4 key购买 nike

我有两个问题要问你:

  1. [已解决] - 在 java 中,我可以使用鼠标监听器在图像周围移动。与其将图像准确移动到我的指针所在的位置,不如点击并向上移动鼠标,它只会将图像向上移动。不要让图像跳到我的鼠标指针所在的位置。

  2. [已解决] - 由于我正在构建一个编辑器,如果我在窗口上有多个图像可以四处移动,如果有两个重叠图像,我如何检测我应该实际移动哪个图像。如果我想将图像移动到图像后面而不是前面,会发生什么,反之亦然。你们在这里做的最好的方法是什么。

一些与这两个问题相关的代码

addMouseMotionListener(new MouseMotionListener() {

@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}

@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
//use this
if(curObj != null){

Point p = arg0.getPoint();

curObj.pos.x = p.x;
curObj.pos.y = p.y;

......
}
}
});


addMouseListener(new MouseListener() {

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
//right now find the first one that contains the mouse.
//later we can make it so they have an option to pick on that overlaps.

Point p = arg0.getPoint();
SwingUtilities.convertPoint(Main.gui, p, instance);

....

//this is the code to detect which image to use
curObj = null;
for(int i = 0; i < objects.size(); i++){
StepObject obj = objects.get(i);
if(obj.isDraggable()){
if(p.x >= obj.pos.x && p.y >= obj.pos.y &&
p.x <= (obj.pos.x + obj.getWidth()) && p.y <= (obj.pos.y + obj.getHeight())){
curObj = obj;
break;
}
}
}

.....

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub

}
});

欢迎任何反馈。

谢谢。

最佳答案

I am actually using Graphics to draw an image.

这是一个用户界面问题,可以追溯到最早、广泛可用的 object drawing programs .常见的方法是实现两个基本操作,使用户能够通过更改呈现顺序来显示隐藏的对象:

  • 向后移动:将所选内容以 z 顺序向后移动一位。
  • 移到后面:将所选内容移到 z 顺序的后面。

通常包括两个互补操作:

  • 向前移动:将所选内容按z顺序向前移动一步。
  • 移到前面:将所选内容移到 z 顺序的前面。

GraphPanel 说明了在 Java 2D 中进行 HitTest 和处理多项选择的几种技术。它说明了至少 一些 对象是可见的更简单的情况。它的渲染顺序由一个简单的 List<Node> 定义。模型使用 ArrayList ,这不适合重新排序;考虑 LinkedList作为 List 的替代实现界面。

关于Java 更好地拖动图像和重叠图像检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11439139/

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