мышь — C ++: как я могу увеличить, как Google Maps?

Я программирую в Windows API, используя C ++. Для этой программы я использую Traslating and Scaling 3D MATRIX, а также событие WM_MOUSEWHEEL. Это часть кода:

case WM_MOUSEWHEEL:
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
rotw = GET_WHEEL_DELTA_WPARAM(wParam);
if (rotw > 0)
zoom += 0.05f;
else
zoom -= 0.05f;
InvalidateRect(hWnd, NULL, false);
break;

Для реализации я использую это:

Translation(xPos,yPos)*Scaling(zoom, zoom)

Но проблема в том, что зум неправильный, потому что он «перепрыгивает» из одной точки в другую, что затрудняет и затрудняет масштабирование определенной точки.
Я читал кое-что о вычислении новых точек X и Y с новыми точками X и Y и использовании коэффициента масштабирования (я думаю, мой коэффициент масштабирования — это переменная ‘zoom’).

Это главное окно со случайной картинкой. Я помещаю указатель в усы и применяю масштабирование колесом мыши …

Но после того, как я сделал зум, это случилось. Увеличение не было сделано в месте, которое я хотел !!!

Вы можете мне помочь?

Большое спасибо!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]