Riateche
@Riateche

Построение и отображение большого изображения в Qt

Моя программа строит изображение по сложным правилам, а затем отображает его в QScrollArea. Сейчас я делаю это так:

  1. Создаем QImage
  2. Заполняем с помощью QImage::setPixel
  3. Добавляем мой виджет (наследуемый от QWidget) и показываем его в QScrollArea
  4. Переопределяем paintEvent и используем QPainter::drawImage для отрисовки видимого участка с нужным масштабом

Кстати, это нормальный способ или можно как-то проще?

Проблема в том, что QImage хранит данные в памяти, а у меня могут быть очень большие изображения, которые в память не уместятся. Нужен аналог QImage, который хранит данные на диске. Как это можно организовать?
  • Вопрос задан
  • 3468 просмотров
Решения вопроса 1
Horse
@Horse
Сам Qt, насколько я понял, предпологает, что вы будете не отрисовывать виджет в QScrollArea а наследовать его от QAbstractScrollArea.
По поводу отображения есть 2 варианта:
1. Вычислять на ходу, очень желательно видеокартой. В этом случаее и хранить ничего не нужно и и со скролингом проблем не будет.
2. Просчитать изображение, разбить на несколько сегментов (например по 10 000 х 10 000 пикселей). При рендеринге подгружать 1-4 нужных фрагмента и собственно отрисовывать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы