crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QWebFrame Zoom относительно выбранной точки, QWebFrame zoom scroll
zaytsewa
  опции профиля:
сообщение 7.6.2011, 14:24
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 55
Регистрация: 20.4.2011
Пользователь №: 2620

Спасибо сказали: 1 раз(а)




Репутация:   0  


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

Сообщение отредактировал zaytsewa - 7.6.2011, 16:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zaytsewa
  опции профиля:
сообщение 7.6.2011, 17:00
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 55
Регистрация: 20.4.2011
Пользователь №: 2620

Спасибо сказали: 1 раз(а)




Репутация:   0  


    
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
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


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

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
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 55
Регистрация: 20.4.2011
Пользователь №: 2620

Спасибо сказали: 1 раз(а)




Репутация:   0  


спасиб, позже проверю
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zaytsewa
  опции профиля:
сообщение 1.7.2011, 8:57
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 55
Регистрация: 20.4.2011
Пользователь №: 2620

Спасибо сказали: 1 раз(а)




Репутация:   0  


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 8.8.2020, 15:01