QCanvasOffscreenCanvas Class
QCanvasOffscreenCanvas stellt einen Offscreen-Canvas dar, den QCanvasPainter ansteuern kann. Mehr...
| Kopfzeile: | #include <QCanvasOffscreenCanvas> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| Seit: | Qt 6.11 |
| Status: | Technische Vorschau |
Öffentliche Typen
Öffentliche Funktionen
| QCanvasOffscreenCanvas(const QCanvasOffscreenCanvas &canvas) | |
| ~QCanvasOffscreenCanvas() | |
| void | detach() |
| QColor | fillColor() const |
| QCanvasOffscreenCanvas::Flags | flags() const |
| bool | isNull() const |
| void | setFillColor(const QColor &color) |
| QRhiTexture * | texture() const |
| QCanvasOffscreenCanvas & | operator=(const QCanvasOffscreenCanvas &canvas) |
Verwandte Nicht-Mitglieder
| bool | operator!=(const QCanvasOffscreenCanvas &lhs, const QCanvasOffscreenCanvas &rhs) |
| bool | operator==(const QCanvasOffscreenCanvas &lhs, const QCanvasOffscreenCanvas &rhs) |
Detaillierte Beschreibung
Ein Offscreen-Canvas besteht im Wesentlichen aus einem Farbpuffer ( QRhiTexture) und möglicherweise anderen zugehörigen Grafikressourcen. Nachdem der Inhalt in den Farbpuffer des Canvas gerendert wurde, kann der Canvas über registered an den Painter übergeben werden, um ein QCanvasImage abzurufen, das dann in drawImage()-Aufrufen oder als image pattern verwendet werden kann.
Um einen Offscreen-Canvas zu erstellen, rufen Sie QCanvasPainter::createCanvas() auf. Um einen Offscreen-Canvas mit Zeichenbefehlen anzusteuern, rufen Sie die entsprechende QCanvasRhiPaintDriver::beginPaint()-Überladung auf, wenn Sie mit der API auf niedrigerer Ebene arbeiten, oder QCanvasPainterWidget::beginCanvasPainting() oder QCanvasPainterItemRenderer::beginCanvasPainting(), wenn Sie die Convenience Widget- oder Qt Quick Item-Klassen verwenden.
Ähnlich wie bei QCanvasImage und QCanvasBrush wird QCanvasOffscreenCanvas explizit gemeinsam genutzt. Siehe Implizite Datenfreigabe und QSharedDataPointer für Details.
Hinweis: Wie bei QCanvasImage kann ein QCanvasOffscreenCanvas als ein Objekt betrachtet werden, das lediglich Handles enthält. Selbst wenn eine Abtrennung erfolgt, werden die tatsächlichen Ressourcen, z. B. die zugrunde liegende Textur und die darin enthaltenen Bilddaten, niemals tatsächlich kopiert oder dupliziert. Der tatsächliche Eigentümer von echten Grafikressourcen (z. B. einer QRhiTexture) ist der QCanvasPainter, der den QCanvasOffscreenCanvas über createCanvas() weitergegeben hat.
Eine Leinwand gehört immer dem QCanvasPainter, der sie erstellt hat. Manuelles Zerstören von Leinwänden erfolgt durch den Aufruf von destroyCanvas(). In den meisten Fällen wird dies jedoch nicht notwendig sein, da der Painter bei seiner eigenen Zerstörung alle Leinwände automatisch zerstört.
Dokumentation der Mitgliedstypen
enum class QCanvasOffscreenCanvas::Flag
flags QCanvasOffscreenCanvas::Flags
Gibt die Flags für die Leinwand an.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasOffscreenCanvas::Flag::PreserveContents | 0x01 | Gibt an, dass der Inhalt des Canvas erhalten bleibt, wenn darauf gemalt wird. Dies kann je nach GPU-Architektur negative Auswirkungen auf die Leistung haben. Siehe QRhiTextureRenderTarget::PreserveColorContents für Details. Das Setzen dieses Flags wird nicht unterstützt, wenn die Sampleanzahl größer als 1 ist. |
QCanvasOffscreenCanvas::Flag::MipMaps | 0x02 | Gibt an, dass für die Hintergrundtextur der Leinwand Mipmapping aktiviert sein sollte. Das Setzen dieses Flags wird nicht unterstützt, wenn die Anzahl der Samples größer als 1 ist. Beachten Sie, dass die Mipmap-Sequenz erzeugt wird, wenn addImage() mit dem gesetzten GenerateMipmaps Flag aufgerufen wird. Dies bedeutet, dass addImage() jedes Mal aufgerufen werden muss, wenn sich der Inhalt der Leinwand ändert, damit die Mipmap-Kette neu generiert wird. Die häufige Erzeugung von Mipmaps kann sich negativ auf die Leistung auswirken. |
Der Typ Flags ist ein Typedef für QFlags<Flag>. Er speichert eine OR-Kombination von Flag-Werten.
Dokumentation der Mitgliedsfunktionen
QCanvasOffscreenCanvas::QCanvasOffscreenCanvas(const QCanvasOffscreenCanvas &canvas)
Konstruktor kopieren.
[noexcept] QCanvasOffscreenCanvas::~QCanvasOffscreenCanvas()
Zerstörer.
void QCanvasOffscreenCanvas::detach()
Wenn mehrere Leinwände gemeinsame Daten nutzen, erstellt dieses Bild eine Kopie der Daten und löst sich von dem Mechanismus der gemeinsamen Nutzung, um sicherzustellen, dass dieses Bild das einzige ist, das auf die Daten verweist.
Wenn es nur einen einzigen Verweis gibt, wird nichts unternommen.
Hinweis: Die Leinwand enthält nur Handles zu den zugrunde liegenden Grafikressourcen und Daten wie die Füllfarbe. Die Grafikressourcen selbst, wie z. B. die QRhiTexture, werden niemals kopiert oder dupliziert.
QColor QCanvasOffscreenCanvas::fillColor() const
Gibt die aktuelle Füllfarbe zurück.
Siehe auch setFillColor().
QCanvasOffscreenCanvas::Flags QCanvasOffscreenCanvas::flags() const
Gibt die Flags zurück, mit denen der Canvas erstellt wurde.
Die Flags sind unveränderlich und können nicht mehr geändert werden, sobald die Leinwand erstellt wurde.
bool QCanvasOffscreenCanvas::isNull() const
Gibt true zurück, wenn diese Leinwand gültige Daten hat.
Normalerweise wird dies immer true sein.
Siehe auch texture().
void QCanvasOffscreenCanvas::setFillColor(const QColor &color)
Legt die Füllfarbe (Clear) auf color fest.
Standardmäßig ist dies der Wert, der an createCanvas() übergeben wird.
Siehe auch fillColor().
QRhiTexture *QCanvasOffscreenCanvas::texture() const
Gibt die Textur zurück, die dieser Offscreen-Leinwand zugrunde liegt.
Siehe auch isNull().
QCanvasOffscreenCanvas &QCanvasOffscreenCanvas::operator=(const QCanvasOffscreenCanvas &canvas)
Weist diesem Canvas eine flache Kopie des angegebenen canvas zu und gibt einen Verweis auf diesen Canvas zurück. Weitere Informationen über flache Kopien finden Sie in der Dokumentation zur gemeinsamen Nutzung impliziter Daten.
Hinweis: Die zugrundeliegenden Ressourcen, die Grafikressourcen wie QRhiTexture, werden niemals kopiert oder dupliziert.
Verwandte Nicht-Mitglieder
[noexcept] bool operator!=(const QCanvasOffscreenCanvas &lhs, const QCanvasOffscreenCanvas &rhs)
Gibt true zurück, wenn sich der Canvas-Handle lhs von rhs unterscheidet; andernfalls false.
Siehe auch operator==().
[noexcept] bool operator==(const QCanvasOffscreenCanvas &lhs, const QCanvasOffscreenCanvas &rhs)
Gibt true zurück, wenn der Canvas-Handle lhs gleich rhs ist; andernfalls false.
Hinweis: Gleichheit bedeutet, dass die Füllfarben der beiden Canvas-Objekte gleich sind und sie auf die gleichen Grafikressourcen verweisen. Der Inhalt (Pixeldaten) wird nicht verglichen.
Siehe auch operator!=().
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.