鼠标和光标操作
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: 右键按下
鼠标的坐标转换
|
|
从局部坐标到全局坐标
|
|
从全局坐标到局部坐标