我想用老鼠滚轮在我的照片过剩的程序要放大和缩小的一个场景吗?我要怎么做?

有帮助吗?

解决方案 2

注意到尊敬的 内特*罗宾的过剩 图书馆不支持的滚轮.但是,后来实现的过剩喜欢 FreeGLUT 做。

使用的涡轮在FreeGLUT是死简单。这里是如何:

声明回呼功能应被称为当的滚轮滚动。这是原型:

void mouseWheel(int, int, int, int);

寄回调与(免费)过剩的功能 glutMouseWheelFunc().

glutMouseWheelFunc(mouseWheel);

定义回调功能。第二个参数提供方向的滚动。值+1是向前,-1是落后的。

void mouseWheel(int button, int dir, int x, int y)
{
    if (dir > 0)
    {
        // Zoom in
    }
    else
    {
        // Zoom out
    }

    return;
}

这就是它!

其他提示

Freeglut的glutMouseWheelFunc回调版本的依赖和不可靠的X.使用鼠标准的功能和测试按钮3和4。

该OpenGlut注意到在glutMouseWheelFunc状态:

由于缺乏信息有关的鼠标,这是不可能的 实现这一正确地在X在这个时候。使用的这个功能 限制了便携性的应用程序。(这个功能的工作上 X,只是不可靠。) 你是鼓励使用标准, 可靠的鼠标按钮报告,而不是轮事件。

使用标准的过剩鼠报告:

#include <GL/glut.h>

<snip...>

void mouse(int button, int state, int x, int y)
{
   // Wheel reports as button 3(scroll up) and button 4(scroll down)
   if ((button == 3) || (button == 4)) // It's a wheel event
   {
       // Each wheel event reports like a button click, GLUT_DOWN then GLUT_UP
       if (state == GLUT_UP) return; // Disregard redundant GLUT_UP events
       printf("Scroll %s At %d %d\n", (button == 3) ? "Up" : "Down", x, y);
   }else{  // normal button event
       printf("Button %s At %d %d\n", (state == GLUT_DOWN) ? "Down" : "Up", x, y);
   }
}

<snip...>

glutMouseFunc(mouse);

作为运指出,它"死简单"。他只是错误的。

观察到的情况下3和4中的关声明如下可回调

glutMouseFunc(mouseClick);

...

void mouseClick(int btn, int state, int x, int y) {
  if (state == GLUT_DOWN) {
    switch(btn) {
    case GLUT_LEFT_BUTTON:
      std::cout << "left click at: (" << x << ", " << y << ")\n";
      break;
    case GLUT_RIGHT_BUTTON:
      std::cout << "right click at: (" << x << ", " << y << ")\n";
      break;
    case GLUT_MIDDLE_BUTTON:
      std::cout << "middle click at: (" << x << ", " << y << ")\n";
      break;
    case 3:  //mouse wheel scrolls
      std::cout << "mouse wheel scroll up\n";
      break;
    case 4:
      std::cout << "mouse wheel scroll down\n";
      break;
    default:
      break;
    }
  }
  glutPostRedisplay();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top