首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MultiTouch上,SDL_FINGERDOWN给出了错误的光标位置

在MultiTouch上,SDL_FINGERDOWN给出了错误的光标位置
EN

Stack Overflow用户
提问于 2016-05-24 21:08:00
回答 1查看 391关注 0票数 0

设备: Macbook、OS X、多点触控、SDL2。

代码语言:javascript
运行
复制
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中获得光标位置的坐标呢?

我是说..。我可以在左上角点击我的多点触控,但此时我的光标将在屏幕的右下角。

EN

回答 1

Stack Overflow用户

发布于 2016-06-02 04:49:34

如果我没理解错的话,你想知道触摸设备的位置和屏幕上光标的位置吗?

我推荐使用SDL_MOUSEMOTION事件:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
int mouseX;
int mouseY;
SDL_GetGlobalMouseState(&mouseX, &mouseY);

这将为您提供全局(相对于桌面)坐标。

目前SDL_GetMouseState有一个bug,如果你使用SDL_SetWindowFullscreen并将其设置为无边框全屏(SDL_WINDOW_FULLSCREEN_DESKTOP),它会得到错误的坐标,这就是为什么我推荐使用SDL_MOUSEMOTION事件。

它可以在任何其他实例中使用(据我所知)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37414588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档