鼠标和光标操作
SDL2里面专门有SDL_mouse.h头文件给出了鼠标和光标的操作。
关于光标的操作 SDL2里面提供了很多关于光标的操作,包括创建光标,显示光标等。
创建光标
| |
这个函数通过SDL_Surface指定一个图片,hot_x,hot_y来指定光标的操纵点来创建一个光标。
| |
这个函数创建一个黑白的光标,通过data,mask数组给出光标的像素信息,w,h给出光标大小,hot_x,hot_y给出光标操纵点来创建光标,这里有一个例子
| |
这个函数创建一个系统自带的光标,其中id有如下取值:

设置光标 创建了光标当然要使用了
| |
释放光标 创建了光标当然要释放了
| |
获得当前光标
| |
获得SDL2默认光标
| |
显示光标
| |
给入SDL_ENABLE显示光标,SDL_DISABLE隐藏光标,SDL_QUERY 返回当前光标显示状态。
关于鼠标的操作
鼠标事件 鼠标事件有如下几个:
- SDL_MOUSEMOTION 鼠标移动
- SDL_MOUSEBUTTONDOWN 鼠标按下
- SDL_MOUSEBUTTONUP 鼠标按下
- SDL_MOUSEWHEEL 鼠标滚轮
鼠标的事件处理中,event.button会存储所有的信息(滚轮事件中成员变量意义可能不一样,请看wiki),包括:
button:按下的按键,可以是- SDL_BUTTON_RIGHT
- SDL_BUTTON_LEFT
- SDL_BUTTON_MIDDLE
x:鼠标的x位置y:鼠标的y坐标xrel, yrel:鼠标的移动距离(仅MOUSEMOTION事件)clicks:鼠标点击次数。1是单击,2是双击(仅MOUSEDOWN,MOUSEUP事件)direction:鼠标滚轮的方向(仅MOUSEWHEEL事件)
是否全局追踪鼠标
| |
这个函数可以让你定义是否全局追踪鼠标。如果你给入了SDL_TRUE,表示全局追踪鼠标。这样即使鼠标事件发生在程序窗体外面也可以监测到。 如果为SDL_FALSE,那么就只能检测到这个程序的鼠标事件。
获得鼠标状态(按键,位置等)
| |
这个函数获得鼠标的局部坐标位置
| |
这个函数获得全局鼠标位置(相对于整个屏幕的)
| |
这个函数用来获得上次调用这个函数到这次调用函数鼠标的x,y坐标的偏移量。
如果想要使用这个函数,你需要通过这个函数来指定是否开启Relative模式:
| |
传入SDL_TRUE表示开启 或者通过这个函数得到Relative模式的状态:
| |
这三个函数的返回值都是鼠标的按键状态。你可以使用 SDL_BUTTON(X) 宏来获得状态: SDL_BUTTON(X返回:
- 1:左键按下
- 2:中键按下
- 3: 右键按下
鼠标的坐标转换
| |
从局部坐标到全局坐标
| |
从全局坐标到局部坐标