Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Script. Интеграция WebKit _ QWebFrame Zoom относительно выбранной точки

Автор: zaytsewa 7.6.2011, 14:24

Всем привет!
Хочется управлять зумом относительно выбранной точки, те. при приближении требуется, чтобы под курсором оставался один и тот же элемент изображения.
Подскажите как и чего, пожалуйста.

Автор: zaytsewa 7.6.2011, 17:00

    
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 );


вот это не работает так как надо...

Автор: Алексей1153 7.6.2011, 19:47

можно попробовать так:

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);

(не компилировал, не отлаживал :) )

Автор: zaytsewa 8.6.2011, 12:39

спасиб, позже проверю

Автор: zaytsewa 1.7.2011, 8:57

трабл был в том, что позиция курсора возвращалась в координатах приложения, а не в координатах виджета

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)