Увеличение и уменьшение масштаба по центру курсора мыши в 2D с помощью ImGUIC++

Программы на C++. Форум разработчиков
Anonymous
Увеличение и уменьшение масштаба по центру курсора мыши в 2D с помощью ImGUI

Сообщение Anonymous »

У меня есть 2D-холст, используемый в контексте ImGUI, для которого требуются функции масштабирования и панорамирования.
В настоящее время функция панорамирования работает нормально. Однако функция масштабирования масштабируется, но результат не центрируется вокруг местоположения курсора мыши.
У меня есть следующие три метода, которые должны работать вместе:

Код: Выделить всё

void Canv::HandleInput(const ImVec2& canvasPosition, const ImVec2& canvasSize) {
canvasPosition_  = canvasPosition;
canvasSize_= canvasSize;

ImVec2 mousePosition = ImGui::GetMousePos();

if (ImGui::IsMouseDragging(ImGuiMouseButton_Left)) {
const auto mouse_delta = ImGui::GetIO().MouseDelta;
pan -= ImVec2(mouse_delta.x, -mouse_delta.y) / (zoom * units_per_pixel);
}

// Problematic section   

Подробнее здесь: [url]https://stackoverflow.com/questions/79322720/zoom-in-and-out-centered-about-the-mouse-cursor-in-2d-using-imgui[/url]

Вернуться в «C++»