From 55dc8456130d11b1947a0bcdfdb32f439fc066f4 Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Sun, 7 Dec 2025 15:52:23 +0800 Subject: [PATCH] add CoordinateTools --- src/utils/CoordinateTools.cpp | 16 ++++++++++++++++ src/utils/CoordinateTools.h | 6 ++++++ 2 files changed, 22 insertions(+) create mode 100644 src/utils/CoordinateTools.cpp create mode 100644 src/utils/CoordinateTools.h diff --git a/src/utils/CoordinateTools.cpp b/src/utils/CoordinateTools.cpp new file mode 100644 index 0000000..8e3c55b --- /dev/null +++ b/src/utils/CoordinateTools.cpp @@ -0,0 +1,16 @@ +#include "CoordinateTools.h" + +std::pair physicalToLogical(const float screenX, const float screenY, SDL_Renderer* renderer) { + // 将窗口坐标转为逻辑坐标 + float logicalX, logicalY; + SDL_RenderCoordinatesFromWindow( + renderer, + static_cast(screenX), + static_cast(screenY), + &logicalX, + &logicalY + ); + int mouseX = static_cast(logicalX); + int mouseY = static_cast(logicalY); + return {logicalX, logicalY}; +} \ No newline at end of file diff --git a/src/utils/CoordinateTools.h b/src/utils/CoordinateTools.h new file mode 100644 index 0000000..de7ec32 --- /dev/null +++ b/src/utils/CoordinateTools.h @@ -0,0 +1,6 @@ +#pragma once +#include +#include + +std::pair physicalToLogical(const float screenX, const float screenY, SDL_Renderer* renderer); +