Рисование поверх прокручиваемого, масштабируемого изображения в Qt - PullRequest
2 голосов
/ 20 декабря 2010

Извините, если мой вопрос несколько расплывчатый.Прошло несколько лет с тех пор, как я что-то делал с Qt, и тогда я никогда не делал ничего необычного.То, о чем я прошу ниже, - это лишь некоторые общие рекомендации, какие классы следует использовать.Я стараюсь не лаять неправильное дерево с самого начала.

Ситуация: Я пишу программу на основе Qt, в которой мне нужно отобразить несколько большую (скажем, 5000x5000) растровое изображение.Пользователь должен иметь возможность (быстро) увеличивать и уменьшать масштаб и перемещаться по изображению, как, например, карты Google.Пока что это не очень отличается от примера Qt ImageViewer , за исключением, возможно, требования, что масштабирование происходит быстро.Однако мне нужно нарисовать порядка 50 тыс. Простых геометрических фигур (скажем, кругов) поверх изображения, и я могу добавить и удалить некоторые из них простым способом.Круги должны иметь одинаковый размер, независимо от уровня масштабирования, и поэтому должны либо перерисовываться всякий раз, когда пользователь увеличивает масштаб, либо должны рисоваться с векторной графикой.Думайте о кругах как аннотации карты.Они должны выглядеть одинаково на любом уровне масштабирования, а также вести себя хорошо в отношении панорамирования.

Я думаю, мой вопрос двоякий:

  1. Может ли Qt рисовать векторную графику поверхрастровое изображение?
  2. В общем, какие классы мне следует рассмотреть для вышеупомянутого?

Заранее спасибо.Я сам не люблю отвечать на смутные вопросы, но, возможно, кто-то, имеющий опыт работы с графическими возможностями Qt, может ответить.

1 Ответ

5 голосов
/ 20 декабря 2010

Я предлагаю вам использовать QGraphicsView и друзей для этого.Это помогает обрабатывать все преобразования вида / мира, а векторные элементы можно получить с помощью различных QGraphicsItems .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...