在我的应用程序中,我需要从SDL_Surface返回相对鼠标位置,问题是返回的鼠标位置是相对于SDL窗口而不是SDL_Surface。我想我的问题是最简单/最有效的方法是什么。有问题请问。感谢。
编辑:抱歉,我应该更好地解释一下,我SDL_Surface* Surf_Display;
Surf_display
有一张图片说它的1000 x 1000,所以为了看到图片一个600 x 600的窗口我有一个可以移动的相机(实际上是移动而不是相机的表面),例如向右看图像我移动表面-1左边,如果这是有道理的。所以我的问题是当我在表面的一部分上单击鼠标(图像)时,我的鼠标返回鼠标与光标在窗口中的位置相比的位置,我想要的是它返回的位置光标与表面上的位置比较(图像)
我希望能更好地解释这种情况。再次感谢
答案 0 :(得分:1)
只需添加(或减去,取决于你如何看待)鼠标坐标的偏移量。所以你正在绘制这样的表面:
SDL_Rect dest_rect = { -camera.x, -camera.y };
SDL_BlitSurface(image_surface, NULL, screen_surface, &dest_rect);
我不知道您是否使用基于事件的鼠标处理,或者如果您正在使用SDL_GetMouseState,但无论如何,您只需将camera.x和camera.y添加到鼠标位置,例如:< / p>
int x, y;
SDL_GetMouseState(&x, &y);
x += camera.x;
y += camera.y;