SDL_Surface的相对鼠标位置

Relative mouse position of SDL_Surface

本文关键字:鼠标 位置 相对 Surface SDL      更新时间:2023-10-16

在我的应用程序中,我需要从SDL_Surface返回相对鼠标位置,问题是返回的鼠标位置相对于SDL窗口而不是SDL_Surface。我想我的问题是做这件事最简单/最有效的方法是什么。有问题就问。谢谢。

编辑:对不起,我应该解释得更好,我有SDL_Surface* Surf_Display;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和相机。Y指向鼠标位置,例如:

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