Задать вопрос
Riateche
@Riateche

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

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

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

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

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

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

Похожие вопросы
Инситех Санкт-Петербург
от 250 000 ₽
Фабрика Решений Красноярск
от 160 000 до 200 000 ₽
Cycura Минск
от 100 000 до 150 000 ₽