C++ SDL_曲面的相对鼠标位置

C++ SDL_曲面的相对鼠标位置,c++,sdl,C++,Sdl,在我的应用程序中,我需要从SDL_曲面返回鼠标的相对位置,问题是返回的鼠标位置是相对于SDL窗口而不是SDL_曲面的。我想我的问题是什么是最简单/最有效的方法。有问题尽管问。谢谢 编辑:对不起,我应该解释得更好,我有SDL\u Surface*Surf\u显示屏在Surf_display上有一个图像,比如说它是1000 x 1000,所以为了在600 x 600的窗口上看到图像,我有一个可以移动的相机(实际上是移动的表面,而不是相机),例如,为了看图像的右侧,我将表面移动-如果有意义的话,向左移

在我的应用程序中,我需要从SDL_曲面返回鼠标的相对位置,问题是返回的鼠标位置是相对于SDL窗口而不是SDL_曲面的。我想我的问题是什么是最简单/最有效的方法。有问题尽管问。谢谢

编辑:对不起,我应该解释得更好,我有
SDL\u Surface*Surf\u显示屏
Surf_display
上有一个图像,比如说它是1000 x 1000,所以为了在600 x 600的窗口上看到图像,我有一个可以移动的相机(实际上是移动的表面,而不是相机),例如,为了看图像的右侧,我将表面移动-如果有意义的话,向左移动1。因此,我的问题是,当我在曲面(图像)的一部分上单击鼠标时,我的鼠标返回鼠标与光标在窗口中的位置相比较的位置,我想要的是它返回光标的位置,与光标在曲面上的位置相比较(图像) 我希望这能更好地解释这种情况。再次感谢

只需添加(或减去,取决于您的观察方式)鼠标坐标的偏移量即可。你画的曲面是这样的:

SDL_Rect dest_rect = { -camera.x, -camera.y };
SDL_BlitSurface(image_surface, NULL, screen_surface, &dest_rect);
我不知道您是在使用基于事件的鼠标处理,还是在使用SDL_GetMouseState,但无论哪种方式,您都只需将camera.x和camera.y添加到鼠标位置,例如:

int x, y;
SDL_GetMouseState(&x, &y);
x += camera.x;
y += camera.y;

你现在有什么?当你说
SDL\u Surface
时,你指的是
SDL\u SetVideoMode
返回的那个吗?因为否则,我不知道你所说的相对于
SDL_曲面的位置是什么意思,因为它们没有位置。@Benjamin Lindley抱歉,请阅读上面的内容