如何在C++ SDL2中获取整数类型的鼠标x、y坐标值
SDL2 C++ 鼠标坐标获取方法
基础坐标获取
SDL_GetMouseState 会在返回鼠标按键状态的同时,通过指针参数输出你需要的整数型坐标:
// 定义两个int变量用于接收坐标值 int mouse_x, mouse_y; // 传入变量地址调用函数 Uint32 button_state = SDL_GetMouseState(&mouse_x, &mouse_y);
调用完成后,mouse_x 就是鼠标横向坐标,mouse_y 就是纵向坐标,数值为整数像素单位,原点在当前SDL窗口左上角,x向右递增,y向下递增,完全符合常规2D开发的坐标逻辑。
附加说明
- 函数的返回值
button_state可以用来判断当前鼠标按键的按下状态,比如判断左键是否按下可以写:
类似的还有if (button_state & SDL_BUTTON(SDL_BUTTON_LEFT)) { // 左键按下的逻辑 }SDL_BUTTON_MIDDLE(中键)、SDL_BUTTON_RIGHT(右键)等枚举值可以用。 - 如果你需要获取鼠标相对于整个系统桌面的全局坐标,可以换成
SDL_GetGlobalMouseState,调用方式和上面完全一致。 - 如果你的项目里已经在处理SDL事件循环,也可以直接从
SDL_MOUSEMOTION事件结构体里直接拿坐标:
两种方式都可以,按需选择即可。SDL_Event event; while (SDL_PollEvent(&event)) { if (event.type == SDL_MOUSEMOTION) { int x = event.motion.x; int y = event.motion.y; // 处理鼠标移动逻辑 } }
内容的提问来源于stack exchange,提问作者UberSuperBoss
相关产品推荐
相关产品推荐

