Malgeräte und Backends
Erstellen eines Malgeräts
Die Klasse QPaintDevice ist die Basisklasse für Objekte, die gezeichnet werden können, d.h. QPainter kann auf jede QPaintDevice Unterklasse zeichnen. QPaintDevice Die Zeichenfähigkeiten von QOpenGLPaintDevice werden unter anderem von QWidget, QImage, QPixmap, QPicture, QPrinter und implementiert.
Widget Die Klasse QWidget ist die Basisklasse der Elemente der Benutzeroberfläche im Qt Widgets Modul. Sie empfängt Maus-, Tastatur- und andere Ereignisse vom Fenstersystem und zeichnet eine Darstellung von sich selbst auf dem Bildschirm. |
Bild Die Klasse QImage stellt eine hardwareunabhängige Bilddarstellung zur Verfügung, die für E/A und für direkten Pixelzugriff und -manipulation konzipiert und optimiert ist. QImage unterstützt mehrere Bildformate, darunter monochrome, 8-Bit-, 32-Bit- und Alpha-Blended-Bilder. Ein Vorteil der Verwendung von QImage als Zeichengerät ist, dass die Pixelgenauigkeit jeder Zeichenoperation plattformunabhängig garantiert werden kann. Ein weiterer Vorteil ist, dass das Malen in einem anderen Thread als dem aktuellen GUI-Thread durchgeführt werden kann. |
Pixmap Die Klasse QPixmap ist eine Off-Screen-Bilddarstellung, die für die Darstellung von Bildern auf dem Bildschirm konzipiert und optimiert ist. Im Gegensatz zu QImage sind die Pixeldaten in einer Pixmap intern und werden vom zugrundeliegenden Fenstersystem verwaltet, d.h. auf die Pixel kann nur über QPainter Funktionen oder durch Konvertierung der QPixmap in eine QImage zugegriffen werden. Um das Zeichnen mit QPixmap zu optimieren, stellt Qt die Klasse QPixmapCache zur Verfügung, die dazu verwendet werden kann, temporäre Pixmaps zu speichern, deren Erzeugung teuer ist, ohne mehr Speicherplatz als das Cache-Limit zu belegen. Qt stellt auch die QBitmap Komfortklasse zur Verfügung, die von QPixmap erbt. QBitmap garantiert monochrome (1-Bit-Tiefe) Pixmaps und wird hauptsächlich für die Erstellung von benutzerdefinierten QCursor und QBrush Objekten und die Konstruktion von QRegion Objekten verwendet. |
OpenGL-Malgerät Wie bereits erwähnt, bietet Qt Klassen an, die es einfach machen, OpenGL in Qt-Anwendungen zu verwenden. Zum Beispiel ermöglicht die QOpenGLPaintDevice die OpenGL-API für das Rendering mit QPainter. |
Bild Die Klasse QPicture ist ein Malgerät, das QPainter Befehle aufzeichnet und wiedergibt. Ein Picture serialisiert Painter-Befehle an ein IO-Device in einem plattformunabhängigen Format. QPicture ist auch auflösungsunabhängig, d.h. ein QPicture kann auf verschiedenen Geräten (z.B. svg, pdf, ps, Drucker und Bildschirm) gleich dargestellt werden. Qt bietet die Funktionen QPicture::load() und QPicture::save() sowie Streaming-Operatoren zum Laden und Speichern von Bildern. |
Benutzerdefinierte Backends Die Unterstützung für ein neues Backend kann implementiert werden, indem man von der Klasse QPaintDevice ableitet und die virtuelle Funktion QPaintDevice::paintEngine() reimplementiert, um QPainter mitzuteilen, welche Paint-Engine zum Zeichnen auf diesem speziellen Gerät verwendet werden soll. Um tatsächlich auf dem Gerät zeichnen zu können, muss diese Paint-Engine eine benutzerdefinierte Paint-Engine sein, die durch Ableitung von der Klasse QPaintEngine erstellt wurde. |
© 2025 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.