zoukankan      html  css  js  c++  java
  • OSG-修改osg鼠标中轮放大缩小的操作键

    相关资料:

    https://blog.csdn.net/yang_sen_/article/details/84328233

    原文:

    EarthManipulator默认的操作是向里滚动,地球远了,向外滚动,地球进了。
    
    我不太习惯这种操作,我个人认为向里滚动,地球近了,向外滚动,地球远了。
    
    查找了一下EarthManipulator的源码,在初始化的时候简单修改一下。
    
    _scroll_sens                    ( 1.0 )
    1
    将1.0改为-1.0即可。
    
    _scroll_sens                    ( -1.0 )
    1
    按道理来说,_scroll_sens为1.0是合理的,我们可以使用另外一种方法:
    在这里插入图片描述
    // zoom with the scroll wheel:
    // _settings->bindScroll(ACTION_ZOOM_IN, osgGA::GUIEventAdapter::SCROLL_DOWN);
    // _settiong->bindScroll(ACTION_ZOOM_OUT, osgGA::GUIEventAdapter::SCROLL_UP);
    
    // 向里滚动放大视图, 向外滚动缩小视图
       _settings->bindScroll(ACTION_ZOOM_IN, osgGA::GUIEventAdapter::SCROLL_up);
       _settiong->bindScroll(ACTION_ZOOM_OUT, osgGA::GUIEventAdapter::SCROLL_DOWN);
    查看源码发现,ACTION_ZOOM_IN配置的是SCROLL_DOWN,ACTION_ZOOM_OUT配置的是SCROLL_UP。
    注释的代码是系统原有的。我们将ACTION_ZOOM_IN配置SCROLL_UP,ACTION_ZOOM_OUT配置为SCROLL_DOWN即可。

    我的用法是修改了QT提供的osgQOpenGL库

    void OSGRenderer::wheelEvent(QWheelEvent* event)
    {
        setKeyboardModifiers(event);
        m_osgWinEmb->getEventQueue()->mouseMotion(event->x() * m_windowScale,
                                                  event->y() * m_windowScale);
        m_osgWinEmb->getEventQueue()->mouseSceoll(
        event->orientation() == Qt::Vertical ?
        (event->delta() > 0 ? osgGA::GUIEventAdapter::SCROLL_DOWN :  // 修改处
        osgGA::GUIEventAdapter::SCROLL_UP): // 修改处
        (event->delta() > 0 ? osgGA::GUIEventAdapter::SCROLL_LEFT :
        osgGA::GUIEventAdapter::SCROLL_RIGHT));    
    }
  • 相关阅读:
    企业微信中如何屏蔽另外一个企业的消息
    国际商标注册里面的头头道道
    如何使用charles,常见的charles功能
    Win8中GridVIew千变万化——绑定分组数据
    Win8中ListBox的ScrollIntoView方法失效
    一起零基础通过Nosql考试~~
    Ubuntu部署ros小龟爬爬实例
    学习算法是件怎样的事
    Centos7配置Python3.10.1
    基于Centos7、PHP7.4环境部署wordpress
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/14003617.html
Copyright © 2011-2022 走看看