Относительное положение мыши на SDL_Surface - PullRequest
1 голос
/ 13 октября 2011

В моем приложении мне нужно вернуть относительную позицию мыши из SDL_Surface, проблема в том, что возвращаемая позиция мыши относительно окна SDL, а не SDL_Surface.Я предполагаю, что мой вопрос - какой самый простой / самый эффективный способ сделать это.Любые вопросы просто задавайте.Спасибо.

РЕДАКТИРОВАТЬ: Извините, я должен был объяснить лучше, у меня есть SDL_Surface* Surf_Display; на Surf_display есть изображение, скажем, его 1000 x 1000, поэтому, чтобы увидеть изображение наокно 600 x 600 У меня есть камера, которую я могу перемещать (на самом деле это поверхность, которая движется, а не камера), например, чтобы смотреть вправо от изображения. Я перемещаю поверхность на -1 влево, если это имеет смысл.Так что моя проблема в том, что когда я щелкаю мышью на части поверхности (изображение), моя мышь возвращает положение, в котором мышь находится по сравнению с положением курсора в окне, то, что я хочу, это чтобы она возвращала положениекурсор по сравнению с тем, где он находится на поверхности (изображение), я надеюсь, что лучше объясняет ситуацию.Еще раз спасибо

1 Ответ

1 голос
/ 13 октября 2011

Просто добавьте (или вычтите, в зависимости от того, как вы на это смотрите) смещение к координатам мыши.Итак, вы рисуете поверхность примерно так:

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;
...