Spec-Zone.ru › Qt 5.9

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

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

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

Spec-Zone.ru

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