【发布时间】:2018-03-05 12:58:47
【问题描述】:
与MouseMotionEvent 不同,MouseWheelEvent 不提供鼠标位置(字段x 和y 用于水平和垂直滚动)。
SDL提供SDL_GetMouseState()检索当前鼠标位置,但不在同一坐标系中表示:
SDL_Event event;
while (SDL_WaitEvent(&event)) {
switch (event.type) {
case SDL_MOUSEMOTION: {
int x, y;
SDL_GetMouseState(&x, &y);
printf("event=(%d, %d) state=(%d, %d)\n",
event.motion.x, event.motion.y, x, y);
}
}
}
当我移动鼠标时,它会打印如下内容:
event=(700, 184) state=(479, 126)
event=(702, 175) state=(480, 120)
event=(706, 168) state=(485, 111)
似乎运动事件是相对于纹理或渲染器(在窗口中缩放和居中)表示的,而状态是相对于窗口表示的,以像素为单位。
有没有办法让当前的鼠标状态与鼠标事件填充的位置相匹配?
【问题讨论】:
标签: mouseevent sdl sdl-2 mousewheel