gpt4 book ai didi

c++ - SDL_Surface 的相对鼠标位置

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:50 27 4
gpt4 key购买 nike

在我的应用程序中,我需要从 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 和 camera.y 添加到鼠标位置,例如:

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

关于c++ - SDL_Surface 的相对鼠标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7747683/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com