【问题标题】:How to inverse mouse wheel zoom handling in Piccolo2D?如何在 Piccolo 2D 中反转鼠标滚轮缩放处理?
【发布时间】:2014-05-19 16:28:40
【问题描述】:

在大多数应用程序中,向下旋转滚轮会减小缩放对象的大小,而向上旋转滚轮会增加大小。

在 piccolo2d 中,默认行为是相反的:

private static void showWorldNode() {
        new PFrame() {

            @Override
            public void initialize() {

                getCanvas().getLayer().addChild(worldNode);

                PMouseWheelZoomEventHandler mouseWheelZoomEventHandler = new PMouseWheelZoomEventHandler();
                mouseWheelZoomEventHandler.zoomAboutMouse();
                getCanvas().addInputEventListener(mouseWheelZoomEventHandler);
            }

        };
    }

如何恢复为默认值?

【问题讨论】:

    标签: java scaling mousewheel piccolo


    【解决方案1】:

    您可以提供一个负比例因子来反转该行为,例如:

    mouseWheelZoomEventHandler.setScaleFactor(-0.1d);
    

    PMouseWheelZoomEventHandler 根据比例因子和MouseWheelEvent.getWheelRotation() 的值计算缩放值,返回:

    如果鼠标滚轮向上/远离用户旋转,则为负值, 如果鼠标滚轮向下/朝向 用户

    这里是来自PMouseWheelZoomEventHandler的相关代码

    double scale = 1.0d + event.getWheelRotation() * scaleFactor;
    

    【讨论】:

    • 奇怪,但 -0.1 的比例有效,-1 的比例在旋转时会导致异常。
    • @SuzanCioc 是的,根据上面提到的scale 的计算,scaleFactor = -1 的结果是scale = 0。 PAffineTransform 防止零除法计算逆变换并抛出 PAffineTransformException。
    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多