Всем привет!
Хочется управлять зумом относительно выбранной точки, те. при приближении требуется, чтобы под курсором оставался один и тот же элемент изображения.
Подскажите как и чего, пожалуйста.
QPoint cursorPosition = cursor().pos();
// изменить масштаб
if ( zoomSteps > 0 )
{
page()->mainFrame()->setZoomFactor( page()->mainFrame()->zoomFactor() + 0.2 );
}
else
{
page()->mainFrame()->setZoomFactor( page()->mainFrame()->zoomFactor() - 0.2 );
}
// вернуться к отслеживаемой точке
page()->mainFrame()->setScrollPosition( cursorPosition );
можно попробовать так:
1) до масштабирования выяснить, на какой точке страницы находится курсор (клиентские координаты X0,Y0), а также текущий зум (Z0), текущий скролл (Sx0,Sy0)
2)задаём новый зум (Z1)
3) узнаём, куда сместилась точка , клиентские координаты нового положения:
X1= X0*Z1/Z0
Y1= Y0*Z1/Z0
4) теперь нужно сдвинуться так, чтобы визуально совпали исходная точка и результат
Sx1=Sx0+(X1-X0);
Sy1=Sy0+(Y1-Y0);
(не компилировал, не отлаживал )
спасиб, позже проверю
трабл был в том, что позиция курсора возвращалась в координатах приложения, а не в координатах виджета
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)