diff --git a/core/Base/Input.cpp b/core/Base/Input.cpp index f8b20b3e..435bad33 100644 --- a/core/Base/Input.cpp +++ b/core/Base/Input.cpp @@ -199,7 +199,12 @@ e2d::Point e2d::Input::getMousePos() POINT mousePos; GetCursorPos(&mousePos); ScreenToClient(Window::getInstance()->getHWnd(), &mousePos); - return Point((double)mousePos.x, (double)mousePos.y); + + float dpiScaleX = 0.f, dpiScaleY = 0.f; + Renderer::getFactory()->GetDesktopDpi(&dpiScaleX, &dpiScaleY); + + return Point(static_cast(mousePos.x * 96.f / dpiScaleX), + static_cast(mousePos.y * 96.f / dpiScaleX)); } double e2d::Input::getMouseDeltaX() diff --git a/core/Base/Window.cpp b/core/Base/Window.cpp index 1ff12099..56f61ac5 100644 --- a/core/Base/Window.cpp +++ b/core/Base/Window.cpp @@ -426,7 +426,9 @@ LRESULT e2d::Window::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lPar if (wParam == SIZE_RESTORED) { - _instance->_size = Size(width, height); + float dpiScaleX = 0.f, dpiScaleY = 0.f; + Renderer::getFactory()->GetDesktopDpi(&dpiScaleX, &dpiScaleY); + _instance->_size = Size(width * 96.f / dpiScaleX, height * 96.f / dpiScaleY); } // 如果程序接收到一个 WM_SIZE 消息,这个方法将调整渲染