Spec-Zone.ru › Qt 5.11

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

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

Класс 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/archives/qt-5.11/paintsystem-devices.html

Spec-Zone.ru

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