我有JPanel
,大小为995 x 745像素。面板本身无法调整大小。
面板包含6296 x 7888像素大的图像。我没有创建图像,没有真正的方法可以在没有大量质量损失的情况下缩小图像。
在图片中,我添加了一堆(约230个)不同的" hitboxes",基本上只是您点击某个事件触发位置的坐标。
问题是,当我尝试放大或缩小图片时,这些命中箱不再处于正确的位置。
我试图写出多个不同的数学公式'然而,它只能解决这个问题,它只适用于最靠近左上角的方框。
它越往右,越来越多的盒子向左移动。无论是那个,还是一个缩放刻度都会使框移动400像素。
我现在才开始处理X部分,因为尝试同时解决这两个部分会更复杂。
这是我的代码:
if ((clickX >= getLocationX(l.getClickX()) && clickX <= (getLocationX(l.getClickX()) + getBoxSize()))
&& (clickY >= getLocationY(l.getClickY())
&& clickY <= (getLocationY(l.getClickY()) + getBoxSize()))) {
System.out.println("Clicked box");
}
方法:
private int getLocationX(int initialX) {
if (zoomMod < 0) {
// Zoom out.
return (int) (((initialX - 85) + currentX) + ((int) (zoomMod * 0.006)));// 0.0004
} else {
// Zoom in.
return (int) (((initialX - 85) + currentX) + ((int) (zoomMod * 0.0004)));// 0.0004
}
}
private int getLocationY(int initialY) {
return ((initialY - 85) + currentY);
}
private int getBoxSize() {
if (zoomMod < 0) {
return 170 - ((int) Math.abs(zoomMod * 0.0173));
} else {
return ((int) (zoomMod * .028)) + 170;
}
}
这就是没有缩放的情况:
当完全放大时: