Spec-Zone.ru › Qt 6.1

Устройства и бэкэнды рисования

Создание устройства рисования

Класс QPaintDevice является базовым классом объектов, которые могут быть нарисованы, т.е. QPainter может рисовать на любом подклассе QPaintDevice. Возможности рисования QPaintDevice реализованы, среди прочего, в классах QWidget, QImage, QPixmap, QPicture, QPrinter и QOpenGLPaintDevice.

Виджет

Класс QWidget является базовым классом элементов пользовательского интерфейса в модуле Qt Widgets. Он получает события мыши, клавиатуры и другие события от системы окон и рисует своё представление на экране.

Изображение

Класс QImage предоставляет независимое от аппаратного обеспечения представление изображения, разработанное и оптимизированное для ввода/вывода и прямого доступа к пикселям и их обработки. QImage поддерживает несколько форматов изображений, включая монохромные, 8-битные, 32-битные и изображения с альфа-каналом.

Одно из преимуществ использования QImage как устройства рисования заключается в том, что можно гарантировать точность пикселей любой операции рисования независимо от платформы. Другое преимущество заключается в том, что рисование может выполняться в другом потоке, отличном от текущего потока GUI.

Растровое изображение

Класс QPixmap представляет собой изображение вне экрана, разработанное и оптимизированное для отображения изображений на экране. В отличие от QImage, данные пикселей в растровом изображении являются внутренними и управляются подлежащей системой окон, т.е. к пикселям можно получить доступ только через функции QPainter или путем преобразования QPixmap в QImage.

Для оптимизации рисования с помощью QPixmap Qt предоставляет класс QPixmapCache, который можно использовать для хранения временных растровых изображений, которые сложно генерировать, не занимая больше места, чем лимит кеша.

Qt также предоставляет удобный класс QBitmap, наследуемый от QPixmap. QBitmap гарантирует монохромные (глубина 1 бит) растровые изображения и используется в основном для создания пользовательских объектов QCursor и QBrush, построения объектов QRegion.

Устройство рисования OpenGL

Как уже упоминалось, Qt предлагает классы, которые облегчают использование OpenGL в приложениях Qt. Например, QOpenGLPaintDevice позволяет использовать API OpenGL для рендеринга с помощью QPainter.

Рисунок

Класс QPicture — это устройство рисования, которое записывает и воспроизводит команды QPainter. Рисунок сериализует команды рисования в устройство ввода/вывода в платформенно-независимом формате. QPicture также не зависит от разрешения, т.е. QPicture может отображаться на разных устройствах (например, svg, pdf, ps, принтер и экран), сохраняя одинаковый вид.

Qt предоставляет функции QPicture::load() и QPicture::save(), а также операторы потоковой передачи для загрузки и сохранения рисунков.

Пользовательские бэкэнды

Поддержка нового бэкэнда может быть реализована путем наследования от класса QPaintDevice и переопределения виртуальной функции QPaintDevice::paintEngine(), чтобы указать QPainter, какой движок рисования следует использовать для рисования на этом конкретном устройстве. Для фактического рисования на устройстве этот движок рисования должен быть пользовательским движком рисования, созданным путем наследования от класса QPaintEngine.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/paintsystem-devices.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API