设备: Macbook、OS X、多点触控、SDL2。
float posX = event.tfinger.x;
float posY = event.tfinger.y;
if ( event.type == SDL_FINGERDOWN ) std::cout << "posX = " << posX << ", posY = " << posY << "\n";
它返回我的多点触控设备的坐标。如果我在左上角点击我的多点触控,它会返回类似于0.1x0.1的坐标。好的,好的。但是如何在OS中获得光标位置的坐标呢?
我是说..。我可以在左上角点击我的多点触控,但此时我的光标将在屏幕的右下角。
发布于 2016-06-02 04:49:34
如果我没理解错的话,你想知道触摸设备的位置和屏幕上光标的位置吗?
我推荐使用SDL_MOUSEMOTION事件:
while (SDL_PollEvent(&e))
{
switch(e->type) {
case SDL_MOUSEMOTION:
mouseX = e.button.x;
mouseY = e.button.y;
break;
}
}
其中"mouseX“和"mouseY”变量将是SDL_Window内屏幕上光标的坐标。
如果需要全局鼠标坐标,可以使用SDL_GetGlobalMouseState:
int mouseX;
int mouseY;
SDL_GetGlobalMouseState(&mouseX, &mouseY);
这将为您提供全局(相对于桌面)坐标。
目前SDL_GetMouseState有一个bug,如果你使用SDL_SetWindowFullscreen并将其设置为无边框全屏(SDL_WINDOW_FULLSCREEN_DESKTOP),它会得到错误的坐标,这就是为什么我推荐使用SDL_MOUSEMOTION事件。
它可以在任何其他实例中使用(据我所知)。
https://stackoverflow.com/questions/37414588
复制相似问题