Spec-Zone.ru › Qt

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

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

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

Виджет

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

Изображение

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

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

Пиксель

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

Spec-Zone.ru

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