QPainter Class
Die Klasse QPainter führt Low-Level-Malerei auf Widgets und anderen Malgeräten durch. Mehr...
Kopfzeile: | #include <QPainter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Vererbt von: |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QPainter ist Teil der Klasse Painting Classes.
Hinweis: Alle Funktionen in dieser Klasse sind reentrant.
Öffentliche Typen
class | PixmapFragment |
enum | CompositionMode { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, …, RasterOp_SourceOrNotDestination } |
enum | PixmapFragmentHint { OpaqueHint } |
flags | PixmapFragmentHints |
enum | RenderHint { Antialiasing, TextAntialiasing, SmoothPixmapTransform, VerticalSubpixelPositioning, LosslessImageRendering, NonCosmeticBrushPatterns } |
flags | RenderHints |
Öffentliche Funktionen
QPainter() | |
QPainter(QPaintDevice *Gerät) | |
~QPainter() | |
const QBrush & | background() const |
Qt::BGMode | backgroundMode() const |
bool | begin(QPaintDevice *Gerät) |
void | beginNativePainting() |
QRectF | boundingRect(const QRectF &rectangle, int flags, const QString &text) |
QRect | boundingRect(const QRect &rectangle, int flags, const QString &text) |
QRectF | boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()) |
QRect | boundingRect(int x, int y, int w, int h, int flags, const QString &text) |
const QBrush & | brush() const |
QPoint | brushOrigin() const |
QRectF | clipBoundingRect() konst |
QPainterPath | clipPath() const |
QRegion | clipRegion() const |
QTransform | combinedTransform() const |
QPainter::CompositionMode | compositionMode() const |
QPaintDevice * | device() const |
const QTransform & | deviceTransform() const |
void | drawArc(const QRectF &rectangle, int startAngle, int spanAngle) |
void | drawArc(const QRect &rectangle, int startAngle, int spanAngle) |
void | drawArc(int x, int y, int width, int height, int startAngle, int spanAngle) |
void | drawChord(const QRectF &rectangle, int startAngle, int spanAngle) |
void | drawChord(const QRect &rectangle, int startAngle, int spanAngle) |
void | drawChord(int x, int y, int width, int height, int startAngle, int spanAngle) |
void | drawConvexPolygon(const QPointF *Punkte, int pointCount) |
void | drawConvexPolygon(konst. QPolygon &polygon) |
void | drawConvexPolygon(konst. QPolygonF &polygon) |
void | drawConvexPolygon(const QPoint *Punkte, int pointCount) |
void | drawEllipse(const QRectF &rectangle) |
void | drawEllipse(const QRect &rectangle) |
void | drawEllipse(const QPoint ¢er, int rx, int ry) |
void | drawEllipse(const QPointF ¢er, qreal rx, qreal ry) |
void | drawEllipse(int x, int y, int Breite, int Höhe) |
void | drawGlyphRun(const QPointF &Position, const QGlyphRun &glyphs) |
void | drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor) |
void | drawImage(konst. QPoint &Punkt, konst. QImage &Bild) |
void | drawImage(konst. QPointF &Punkt, konst. QImage &Bild) |
void | drawImage(const QRect &rectangle, const QImage &image) |
void | drawImage(konst. QRectF &Rechteck, konst. QImage &Bild) |
void | drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor) |
void | drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor) |
void | drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor) |
void | drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor) |
void | drawLine(const QLineF &line) |
void | drawLine(const QLine &line) |
void | drawLine(const QPoint &p1, const QPoint &p2) |
void | drawLine(const QPointF &p1, const QPointF &p2) |
void | drawLine(int x1, int y1, int x2, int y2) |
void | drawLines(const QLineF *lines, int lineCount) |
void | drawLines(const QList<QLine> &lines) |
void | drawLines(const QList<QLineF> &lines) |
void | drawLines(const QList<QPoint> &pointPairs) |
void | drawLines(const QList<QPointF> &PunktPaare) |
void | drawLines(const QLine *lines, int lineCount) |
void | drawLines(konst. QPoint *PunktPaare, int lineCount) |
void | drawLines(konst. QPointF *PunktPaare, int lineCount) |
void | drawPath(konst. QPainterPath &path) |
void | drawPicture(konst. QPointF &Punkt, konst. QPicture &Bild) |
void | drawPicture(konst. QPoint &Punkt, konst. QBild &Bild) |
void | drawPicture(int x, int y, konst. QBild &Bild) |
void | drawPie(const QRectF &rectangle, int startAngle, int spanAngle) |
void | drawPie(const QRect &rectangle, int startAngle, int spanAngle) |
void | drawPie(int x, int y, int width, int height, int startAngle, int spanAngle) |
void | drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source) |
void | drawPixmap(konst. QPoint &Punkt, konst. QPixmap &Pixmap) |
void | drawPixmap(konst. QPointF &Punkt, konst. QPixmap &Pixmap) |
void | drawPixmap(const QRect &rectangle, const QPixmap &pixmap) |
void | drawPixmap(konst. QPoint &Punkt, konst. QPixmap &pixmap, konst. QRect &Quelle) |
void | drawPixmap(konst. QPointF &Punkt, konst. QPixmap &Pixmap, konst. QRectF &Quelle) |
void | drawPixmap(konst. QRect &target, konst. QPixmap &pixmap, konst. QRect &source) |
void | drawPixmap(int x, int y, konst. QPixmap &pixmap) |
void | drawPixmap(int x, int y, int Breite, int Höhe, const QPixmap &pixmap) |
void | drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh) |
void | drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh) |
void | drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints()) |
void | drawPoint(const QPointF &Position) |
void | drawPoint(const QPoint &Position) |
void | drawPoint(int x, int y) |
void | drawPoints(const QPointF *Punkte, int pointCount) |
void | drawPoints(konst. QPolygon &Punkte) |
void | drawPoints(konst. QPolygonF &Punkte) |
void | drawPoints(const QPoint *Punkte, int pointCount) |
void | drawPolygon(const QPointF *Punkte, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill) |
void | drawPolygon(const QPolygon &punkte, Qt::FillRule fillRule = Qt::OddEvenFill) |
void | drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill) |
void | drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill) |
void | drawPolyline(const QPointF *Punkte, int PunktZahl) |
void | drawPolyline(konst. QPolygon &Punkte) |
void | drawPolyline(konst. QPolygonF &Punkte) |
void | drawPolyline(const QPoint *Punkte, int pointCount) |
void | drawRect(const QRectF &rectangle) |
void | drawRect(const QRect &rectangle) |
void | drawRect(int x, int y, int Breite, int Höhe) |
void | drawRects(const QRectF *Rechtecke, int rectCount) |
void | drawRects(const QList<QRect> &rectangles) |
void | drawRects(const QList<QRectF> &rectangles) |
void | drawRects(const QRect *rectangles, int rectCount) |
void | drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
void | drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
void | drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
void | drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText) |
void | drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText) |
void | drawStaticText(int links, int oben, const QStaticText &staticText) |
void | drawText(konst. QPointF &Position, konst. QString &text) |
void | drawText(konst. QPoint &Position, konst. QString &Text) |
void | drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption()) |
void | drawText(int x, int y, konst. QString &text) |
void | drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr) |
void | drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr) |
void | drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr) |
void | drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF()) |
void | drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = QPoint()) |
void | drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0) |
bool | end() |
void | endNativePainting() |
void | eraseRect(const QRectF &rectangle) |
void | eraseRect(const QRect &rectangle) |
void | eraseRect(int x, int y, int Breite, int Höhe) |
void | fillPath(konst. QPainterPath &path, konst. QBrush &brush) |
void | fillRect(const QRectF &rectangle, const QBrush &brush) |
void | fillRect(const QRect &rectangle, QGradient::Preset preset) |
void | fillRect(const QRect &rectangle, Qt::BrushStyle style) |
void | fillRect(const QRect &rectangle, Qt::GlobalColor color) |
void | fillRect(const QRect &rectangle, const QBrush &brush) |
void | fillRect(const QRect &rectangle, const QColor &color) |
void | fillRect(const QRectF &rectangle, QGradient::Voreinstellung preset) |
void | fillRect(const QRectF &rectangle, Qt::BrushStyle style) |
void | fillRect(const QRectF &rectangle, Qt::GlobalColor color) |
void | fillRect(const QRectF &rectangle, const QColor &color) |
void | fillRect(int x, int y, int width, int height, QGradient::Preset preset) |
void | fillRect(int x, int y, int width, int height, Qt::BrushStyle style) |
void | fillRect(int x, int y, int Breite, int Höhe, Qt::GlobalColor Farbe) |
void | fillRect(int x, int y, int Breite, int Höhe, const QBrush &brush) |
void | fillRect(int x, int y, int Breite, int Höhe, const QColor &color) |
const QFont & | font() const |
QFontInfo | fontInfo() const |
QFontMetrics | fontMetrics() const |
bool | hasClipping() const |
bool | isActive() const |
Qt::LayoutDirection | layoutDirection() const |
qreal | opacity() const |
QPaintEngine * | paintEngine() const |
const QPen & | pen() const |
QPainter::RenderHints | renderHints() const |
void | resetTransform() |
void | restore() |
void | rotate(qreal Winkel) |
void | save() |
void | scale(qreal sx, qreal sy) |
void | setBackground(const QBrush &pinsel) |
void | setBackgroundMode(Qt::BGMode Modus) |
void | setBrush(konst. QBrush &Pinsel) |
void | setBrush(Qt::BrushStyle Stil) |
void | setBrushOrigin(const QPointF &Position) |
void | setBrushOrigin(const QPoint &Position) |
void | setBrushOrigin(int x, int y) |
void | setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip) |
void | setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip) |
void | setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip) |
void | setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip) |
void | setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip) |
void | setClipping(bool enable) |
void | setCompositionMode(QPainter::CompositionMode Modus) |
void | setFont(konst. QFont &font) |
void | setLayoutDirection(Qt::LayoutDirection Richtung) |
void | setOpacity(qreal Deckkraft) |
void | setPen(const QPen &pen) |
void | setPen(Qt::PenStyle Stil) |
void | setPen(const QColor &color) |
void | setRenderHint(QPainter::RenderHint hint, bool on = true) |
void | setRenderHints(QPainter::RenderHints hints, bool on = true) |
void | setTransform(const QTransform &transform, bool combine = false) |
void | setViewTransformEnabled(bool enable) |
void | setViewport(const QRect &rectangle) |
void | setViewport(int x, int y, int Breite, int Höhe) |
void | setWindow(const QRect &rectangle) |
void | setWindow(int x, int y, int Breite, int Höhe) |
void | setWorldMatrixEnabled(bool enable) |
void | setWorldTransform(const QTransform &matrix, bool combine = false) |
void | shear(qreal sh, qreal sv) |
void | strokePath(const QPainterPath &path, const QPen &pen) |
bool | testRenderHint(QPainter::RenderHint hint) const |
const QTransform & | transform() const |
void | translate(const QPointF &offset) |
void | translate(const QPoint &Offset) |
void | translate(qreal dx, qreal dy) |
bool | viewTransformEnabled() const |
QRect | viewport() const |
QRect | window() const |
bool | worldMatrixEnabled() const |
const QTransform & | worldTransform() const |
Detaillierte Beschreibung
QPainter bietet hochoptimierte Funktionen für die meisten Zeichenaufgaben, die GUI-Programme benötigen. Er kann alles zeichnen, von einfachen Linien bis hin zu komplexen Formen wie Torten und Akkorde. Er kann auch ausgerichteten Text und Pixmaps zeichnen. Normalerweise zeichnet er in einem "natürlichen" Koordinatensystem, aber er kann auch Ansichts- und Welttransformationen durchführen. QPainter kann mit jedem Objekt arbeiten, das die Klasse QPaintDevice erbt.
Die übliche Verwendung von QPainter ist innerhalb des Paint-Ereignisses eines Widgets: Konstruieren Sie den Painter und passen Sie ihn an (z.B. setzen Sie den Stift oder den Pinsel). Dann zeichnen Sie. Denken Sie daran, das QPainter-Objekt nach dem Zeichnen zu zerstören. Zum Beispiel:
void SimpleExampleWidget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setPen(Qt::blue); painter.setFont(QFont("Arial", 30)); painter.drawText(rect(), Qt::AlignCenter, "Qt"); }
Die Kernfunktionalität von QPainter ist das Zeichnen, aber die Klasse bietet auch mehrere Funktionen, mit denen Sie die Einstellungen von QPainter und seine Rendering-Qualität anpassen können, und andere, die das Clipping ermöglichen. Darüber hinaus können Sie steuern, wie verschiedene Formen zusammengefügt werden, indem Sie den Kompositionsmodus des Malers festlegen.
Die Funktion isActive() zeigt an, ob der Painter aktiv ist. Ein Painter wird durch die Funktion begin() und den Konstruktor aktiviert, der ein QPaintDevice Argument annimmt. Mit der Funktion end() und dem Destruktor wird er wieder deaktiviert.
Zusammen mit den Klassen QPaintDevice und QPaintEngine bildet QPainter die Grundlage für das Qt-Zeichensystem. QPainter ist die Klasse, die zum Ausführen von Zeichenoperationen verwendet wird. QPaintDevice repräsentiert ein Gerät, auf das mit einem QPainter gezeichnet werden kann. QPaintEngine stellt die Schnittstelle bereit, die der Painter verwendet, um auf verschiedene Gerätetypen zu zeichnen. Wenn der Painter aktiv ist, gibt device() das Malgerät zurück, auf dem der Painter malt, und paintEngine() gibt die Paint-Engine zurück, mit der der Painter gerade arbeitet. Weitere Informationen finden Sie unter dem Paint-System.
Manchmal ist es wünschenswert, jemand anderen auf einem ungewöhnlichen QPaintDevice malen zu lassen. QPainter unterstützt eine statische Funktion um dies zu tun, setRedirected().
Warnung: Wenn das Malgerät ein Widget ist, kann QPainter nur innerhalb einer paintEvent() Funktion oder in einer von paintEvent() aufgerufenen Funktion verwendet werden.
Einstellungen
Es gibt mehrere Einstellungen, die Sie anpassen können, um QPainter nach Ihren Wünschen zeichnen zu lassen:
- font() ist die Schriftart, die zum Zeichnen von Text verwendet wird. Wenn der Painter isActive() verwendet, können Sie Informationen über die aktuell eingestellte Schriftart und ihre Metriken mit den Funktionen fontInfo() und fontMetrics() abrufen.
- brush() definiert die Farbe oder das Muster, das zum Füllen von Formen verwendet wird.
- pen() definiert die Farbe oder das Muster, das für das Zeichnen von Linien oder Begrenzungen verwendet wird.
- backgroundMode() legt fest, ob es eine background() gibt oder nicht, d.h. entweder Qt::OpaqueMode oder Qt::TransparentMode.
- background() gilt nur, wenn backgroundMode() Qt::OpaqueMode ist und pen() ein Stipple ist. In diesem Fall beschreibt es die Farbe der Hintergrundpixel im Stipple.
- brushOrigin() definiert den Ursprung der gekachelten Pinsel, normalerweise den Ursprung des Hintergrunds des Widgets.
- viewport(), window(), worldTransform() bilden das Koordinatentransformationssystem des Malers. Weitere Informationen finden Sie im Abschnitt Coordinate Transformations und in der Dokumentation Koordinatensystem.
- hasClipping() gibt an, ob der Painter überhaupt geclippt wird. (Das Malgerät klammert ebenfalls.) Wenn der Painter klammert, klammert er an clipRegion().
- layoutDirection() definiert die Layout-Richtung, die der Painter beim Zeichnen von Text verwendet.
- worldMatrixEnabled() gibt an, ob die Welttransformation aktiviert ist.
- viewTransformEnabled() gibt an, ob die Ansichtstransformation aktiviert ist.
Beachten Sie, dass einige dieser Einstellungen die Einstellungen in einigen Zeichengeräten widerspiegeln, z. B. QWidget::font(). Die Funktion QPainter::begin() (oder äquivalent der QPainter-Konstruktor) kopiert diese Attribute aus dem Malgerät.
Sie können den Zustand des QPainters jederzeit speichern, indem Sie die Funktion save() aufrufen, die alle verfügbaren Einstellungen auf einem internen Stapel speichert. Die Funktion restore() holt sie wieder zurück.
Zeichnen
QPainter bietet Funktionen zum Zeichnen der meisten Primitive: drawPoint(), drawPoints(), drawLine(), drawRect(), drawRoundedRect(), drawEllipse(), drawArc(), drawPie(), drawChord(), drawPolyline(), drawPolygon(), drawConvexPolygon() und drawCubicBezier(). Die beiden Komfortfunktionen drawRects() und drawLines() zeichnen die angegebene Anzahl von Rechtecken oder Linien im angegebenen Array von QRects oder QLines unter Verwendung des aktuellen Stifts und Pinsels.
Die Klasse QPainter bietet auch die Funktion fillRect(), die das angegebene QRect mit dem angegebenen QBrush füllt, und die Funktion eraseRect(), die den Bereich innerhalb des angegebenen Rechtecks löscht.
Alle diese Funktionen haben sowohl Ganzzahl- als auch Fließkommaversionen.
![]() | Basic Drawing Beispiel Das Basic-Drawing-Beispiel zeigt, wie man mit der QPainter-Klasse grundlegende Grafikprimitive in einer Vielzahl von Stilen darstellen kann. |
Wenn Sie eine komplexe Form zeichnen müssen, insbesondere wenn Sie dies wiederholt tun müssen, sollten Sie in Erwägung ziehen, eine QPainterPath zu erstellen und sie mit drawPath() zu zeichnen.
Beispiel für Painter-Pfade Die Klasse QPainterPath bietet einen Container für Maloperationen, mit dem grafische Formen konstruiert und wiederverwendet werden können. Das Beispiel für Malpfade zeigt, wie Malpfade verwendet werden können, um komplexe Formen für das Rendern zu erstellen. | ![]() |
QPainter bietet auch die Funktion fillPath(), die den angegebenen QPainterPath mit dem angegebenen QBrush füllt, und die Funktion strokePath(), die den Umriss des angegebenen Pfades zeichnet (d. h. den Pfad streicht).
Siehe auch das Beispiel Vector Deformation, das zeigt, wie man fortgeschrittene Vektortechniken verwendet, um Text mit QPainterPath zu zeichnen, das Beispiel Gradients, das die verschiedenen Arten von Farbverläufen zeigt, die in Qt verfügbar sind, und das Beispiel Path Stroking, das die in Qt eingebauten Strichmuster zeigt und zeigt, wie benutzerdefinierte Muster verwendet werden können, um die Palette der verfügbaren Muster zu erweitern.
Das Zeichnen von Text erfolgt mit drawText(). Wenn Sie eine feinkörnige Positionierung benötigen, sagt Ihnen boundingRect(), wo ein bestimmter drawText()-Befehl zeichnen wird.
Zeichnen von Pixmaps und Bildern
Es gibt Funktionen zum Zeichnen von Pixmaps/Bildern, nämlich drawPixmap(), drawImage() und drawTiledPixmap(). Sowohl drawPixmap() als auch drawImage() erzeugen das gleiche Ergebnis, außer dass drawPixmap() auf dem Bildschirm schneller ist, während drawImage() auf einem QPrinter oder anderen Geräten schneller sein kann.
Es gibt eine Funktion drawPicture(), die den Inhalt eines ganzen QPicture zeichnet. Die Funktion drawPicture() ist die einzige Funktion, die alle Einstellungen des Malers außer Acht lässt, da QPicture seine eigenen Einstellungen hat.
Zeichnen von hochauflösenden Versionen von Pixmaps und Bildern
Hochauflösende Versionen von Pixmaps haben einen Device Pixel Ratio-Wert größer als 1 (siehe QImageReader, QPixmap::devicePixelRatio()). Stimmt er mit dem Wert der zugrundeliegenden QPaintDevice überein, wird er direkt auf das Gerät gezeichnet, ohne dass eine zusätzliche Transformation vorgenommen wird.
Dies ist z.B. der Fall, wenn eine QPixmap mit 64x64 Pixeln und einem Gerätepixelverhältnis von 2 auf einen Bildschirm mit hohem DPI-Wert gezeichnet wird, der ebenfalls ein Gerätepixelverhältnis von 2 hat. Beachten Sie, dass die Pixmap dann effektiv 32x32 Pixel im Benutzerraum hat. Codepfade in Qt, die die Layoutgeometrie basierend auf der Pixmapgröße berechnen, verwenden diese Größe. Der Nettoeffekt davon ist, dass die Pixmap als High-DPI-Pixmap und nicht als große Pixmap angezeigt wird.
Rendering-Qualität
Um ein optimales Rendering-Ergebnis mit QPainter zu erzielen, sollten Sie das plattformunabhängige QImage als Malgerät verwenden, d.h. die Verwendung von QImage stellt sicher, dass das Ergebnis auf jeder Plattform eine identische Pixeldarstellung aufweist.
Die Klasse QPainter bietet auch ein Mittel zur Steuerung der Rendering-Qualität durch ihr RenderHint enum und die Unterstützung von Fließkomma-Präzision: Alle Funktionen zum Zeichnen von Primitiven haben Fließkommaversionen.
painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter));
Diese werden oft in Kombination mit dem QPainter::Antialiasing render hint verwendet.
Vergleich von konzentrischen Kreisen mit int und float und mit oder ohne Anti-Aliasing-Rendering. Die Verwendung der Versionen mit Fließkomma-Präzision erzeugt gleichmäßig verteilte Ringe. Anti-Aliased-Rendering führt zu glatten Kreisen. | ![]() |
Die Aufzählung RenderHint spezifiziert Flags für QPainter, die von jeder Engine beachtet werden können oder auch nicht. QPainter::Antialiasing gibt an, dass die Engine Kanten von Primitiven wenn möglich antialiasen sollte, QPainter::TextAntialiasing gibt an, dass die Engine Text wenn möglich antialiasen sollte, und QPainter::SmoothPixmapTransform gibt an, dass die Engine einen glatten Pixmap-Transformationsalgorithmus verwenden sollte.
Die Funktion renderHints() gibt ein Flag zurück, das die Rendering-Hinweise angibt, die für diesen Painter gesetzt sind. Verwenden Sie die Funktion setRenderHint(), um die aktuell eingestellten RenderHints zu setzen oder zu löschen.
Koordinaten-Transformationen
Normalerweise arbeitet der QPainter mit dem eigenen Koordinatensystem des Geräts (normalerweise Pixel), aber QPainter hat eine gute Unterstützung für Koordinatentransformationen.
Die am häufigsten verwendeten Transformationen sind Skalierung, Rotation, Translation und Scherung. Verwenden Sie die Funktion scale(), um das Koordinatensystem um einen bestimmten Offset zu skalieren, die Funktion rotate(), um es im Uhrzeigersinn zu drehen, und translate(), um es zu verschieben (d. h. einen bestimmten Offset zu den Punkten hinzuzufügen). Sie können das Koordinatensystem auch mit der Funktion shear() um den Ursprung drehen. Siehe das Beispiel Affine Transformationen für eine Visualisierung eines gescherten Koordinatensystems.
Siehe auch das Transformations-Beispiel, das zeigt, wie Transformationen die Art und Weise beeinflussen, wie QPainter Grafikprimitive rendert. Insbesondere zeigt es, wie die Reihenfolge der Transformationen das Ergebnis beeinflusst.
Affine Transformationen Beispiel Das Beispiel für affine Transformationen zeigt die Fähigkeit von Qt, affine Transformationen auf Maloperationen anzuwenden. Die Demo erlaubt es dem Benutzer auch, mit den Transformationsoperationen zu experimentieren und die Ergebnisse sofort zu sehen. | ![]() |
Alle Transformationsoperationen arbeiten mit der Transformation worldTransform(). Eine Matrix transformiert einen Punkt in der Ebene in einen anderen Punkt. Weitere Informationen über die Transformationsmatrix finden Sie in der Dokumentation Koordinatensystem und QTransform.
Die Funktion setWorldTransform() kann die aktuell eingestellte worldTransform() ersetzen oder ergänzen. Die Funktion resetTransform() setzt alle Transformationen zurück, die mit den Funktionen translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() und setWindow() vorgenommen wurden. Die Funktion deviceTransform() gibt die Matrix zurück, die von logischen Koordinaten in Gerätekoordinaten des plattformabhängigen Malgeräts transformiert. Die letztgenannte Funktion wird nur benötigt, wenn plattformabhängige Zeichenbefehle auf dem plattformabhängigen Handle verwendet werden und die Plattform keine nativen Transformationen durchführt.
Beim Zeichnen mit QPainter geben wir Punkte mit logischen Koordinaten an, die dann in die physikalischen Koordinaten des Malgeräts umgewandelt werden. Die Abbildung der logischen Koordinaten auf die physikalischen Koordinaten wird von QPainters combinedTransform(), einer Kombination aus viewport() und window() und worldTransform(), durchgeführt. viewport () stellt die physikalischen Koordinaten dar, die ein beliebiges Rechteck spezifizieren, window() beschreibt das gleiche Rechteck in logischen Koordinaten, und worldTransform() ist identisch mit der Transformationsmatrix.
Siehe auch Koordinatensystem
Beschneiden
QPainter kann jede Zeichenoperation auf ein Rechteck, eine Region oder einen Vektorpfad beschränken. Der aktuelle Clip ist über die Funktionen clipRegion() und clipPath() verfügbar. Ob Pfade oder Regionen bevorzugt (schneller) werden, hängt von der zugrunde liegenden paintEngine() ab. Zum Beispiel bevorzugt die QImage paint engine Pfade, während die X11 paint engine Regionen bevorzugt. Das Setzen eines Clips erfolgt in den logischen Koordinaten des Malers.
Nach dem Beschneiden durch QPainter kann auch das Malgerät beschneiden. Zum Beispiel beschneiden die meisten Widgets die Pixel, die von untergeordneten Widgets verwendet werden, und die meisten Drucker beschneiden einen Bereich in der Nähe der Kanten des Papiers. Diese zusätzliche Beschneidung wird nicht durch den Rückgabewert von clipRegion() oder hasClipping() reflektiert.
Kompositionsmodi
QPainter stellt das CompositionMode enum zur Verfügung, das die Porter-Duff-Regeln für die digitale Bildzusammensetzung definiert; es beschreibt ein Modell für die Kombination der Pixel in einem Bild, der Quelle, mit den Pixeln in einem anderen Bild, dem Ziel.
Die beiden gängigsten Formen der Komposition sind Source und SourceOver. Source wird verwendet, um undurchsichtige Objekte auf ein Malgerät zu zeichnen. In diesem Modus ersetzt jedes Pixel in der Quelle das entsprechende Pixel im Ziel. Im Kompositionsmodus SourceOver ist das Quellobjekt transparent und wird über das Zielobjekt gezeichnet.
Beachten Sie, dass die Kompositionstransformation pixelweise erfolgt. Aus diesem Grund gibt es einen Unterschied zwischen der Verwendung des grafischen Primitivs selbst und dessen Begrenzungsrechteck: Das Begrenzungsrechteck enthält Pixel mit Alpha == 0 (d. h. die Pixel, die das Primitiv umgeben). Diese Pixel überschreiben die Pixel des anderen Bildes und löschen diese effektiv, während das Primitiv nur seinen eigenen Bereich überschreibt.
![]() | Beispiel für Kompositionsmodi Das Beispiel " Composition Modes", das im Verzeichnis "examples" von Qt verfügbar ist, ermöglicht es Ihnen, mit den verschiedenen Kompositionsmodi zu experimentieren und die Ergebnisse sofort zu sehen. |
Einschränkungen
Wenn Sie Koordinaten mit Qt's rasterbasierter Paint-Engine verwenden, ist es wichtig zu beachten, dass, obwohl Koordinaten größer als +/-215 verwendet werden können, jedes Malen, das mit Koordinaten außerhalb dieses Bereichs durchgeführt wird, nicht garantiert werden kann; die Zeichnung kann abgeschnitten werden. Dies ist auf die Verwendung von short int
in der Implementierung zurückzuführen.
Die von Qt's Stroker erzeugten Umrisse sind nur eine Annäherung, wenn es um gekrümmte Formen geht. In den meisten Fällen ist es nicht möglich, den Umriss eines Bézier-Kurvensegments durch ein anderes Bézier-Kurvensegment darzustellen, daher approximiert Qt die Kurvenumrisse durch die Verwendung mehrerer kleinerer Kurven. Aus Leistungsgründen gibt es eine Grenze für die Anzahl der Kurven, die Qt für diese Umrisse verwendet, und daher erhöht sich bei Verwendung großer Stiftbreiten oder Skalen der Umrissfehler. Um Umrisse mit kleineren Fehlern zu erzeugen, kann die Klasse QPainterPathStroker verwendet werden, die die Funktion setCurveThreshold enthält, mit der der Benutzer die Fehlertoleranz festlegen kann. Eine andere Möglichkeit besteht darin, die Pfade zuerst in Polygone umzuwandeln und dann die Polygone zu zeichnen.
Leistung
QPainter ist ein reichhaltiges Framework, das es Entwicklern erlaubt, eine Vielzahl von grafischen Operationen durchzuführen, wie z.B. Farbverläufe, Kompositionsmodi und Vektorgrafiken. Und QPainter ist in der Lage, dies mit einer Vielzahl unterschiedlicher Hardware- und Software-Stacks zu tun. Natürlich hat die zugrundeliegende Kombination von Hardware und Software Auswirkungen auf die Leistung, und die Sicherstellung, dass jede einzelne Operation in Kombination mit all den verschiedenen Kombinationen von Kompositionsmodi, Pinseln, Freistellungen, Transformationen usw. schnell ist, ist aufgrund der Anzahl der Permutationen fast eine unmögliche Aufgabe. Als Kompromiss haben wir eine Teilmenge der QPainter-API und -Backends ausgewählt, bei der die Leistung so gut ist, wie wir sie für die gegebene Kombination von Hardware und Software vernünftig erreichen können.
Die Backends, auf die wir uns als Hochleistungs-Engines konzentrieren, sind:
- Raster - Dieses Backend implementiert das gesamte Rendering in reiner Software und wird immer zum Rendern in QImages verwendet. Für eine optimale Leistung sollten Sie nur die Formattypen QImage::Format_ARGB32_Premultiplied, QImage::Format_RGB32 oder QImage::Format_RGB16 verwenden. Jedes andere Format, einschließlich QImage::Format_ARGB32, hat eine deutlich schlechtere Leistung. Diese Engine wird standardmäßig für QWidget und QPixmap verwendet.
- OpenGL 2.0 (ES) - Dieses Backend ist das primäre Backend für hardwarebeschleunigte Grafiken. Es kann auf Desktop-Rechnern und eingebetteten Geräten ausgeführt werden, die die OpenGL 2.0- oder OpenGL/ES 2.0-Spezifikation unterstützen. Dazu gehören die meisten Grafikchips, die in den letzten paar Jahren hergestellt wurden. Die Engine kann durch die Verwendung von QPainter auf einer QOpenGLWidget aktiviert werden.
Diese Operationen sind:
- Einfache Transformationen, d. h. Verschiebung und Skalierung, sowie Drehungen um 0, 90, 180 und 270 Grad.
drawPixmap()
in Kombination mit einfachen Transformationen und Deckkraft mit nicht-glattem Transformationsmodus (QPainter::SmoothPixmapTransform
nicht als Rendering-Hinweis aktiviert).- Rechteckfüllungen mit Volltonfarbe, zweifarbigen linearen Verläufen und einfachen Transformationen.
- Rechteckiges Clipping mit einfachen Transformationen und Intersect-Clip.
- Kompositionsmodi
QPainter::CompositionMode_Source
und QPainter::CompositionMode_SourceOver. - Abgerundete Rechteckfüllungen mit Volltonfarben und zweifarbigen linearen Farbverläufen.
- 3x3 gepatchte Pixmaps, über qDrawBorderPixmap.
Diese Liste gibt einen Hinweis darauf, welche Funktionen in einer Anwendung, bei der die Leistung entscheidend ist, sicher verwendet werden können. Bei bestimmten Konfigurationen können auch andere Operationen schnell sein, aber bevor man sie ausgiebig nutzt, empfiehlt es sich, sie auf dem System, auf dem die Software letztendlich läuft, zu testen und zu verifizieren. Es gibt auch Fälle, in denen die Verwendung teurer Operationen in Ordnung ist, z. B. wenn das Ergebnis in einer QPixmap zwischengespeichert wird.
Siehe auch QPaintDevice, QPaintEngine, Qt SVG, Basic Drawing Example, und Drawing Utility Functions.
Dokumentation der Mitgliedstypen
enum QPainter::CompositionMode
Legt die Modi fest, die für die digitale Bildzusammensetzung unterstützt werden. Kompositionsmodi werden verwendet, um festzulegen, wie die Pixel in einem Bild, der Quelle, mit den Pixeln in einem anderen Bild, dem Ziel, zusammengeführt werden.
Bitte beachten Sie, dass die bitweisen Rasteroperationsmodi, die mit einem RasterOp-Präfix gekennzeichnet sind, nur in den X11- und Rasterpaint-Engines nativ unterstützt werden. Das bedeutet, dass die einzige Möglichkeit, diese Modi auf dem Mac zu nutzen, eine QImage ist. Die mit RasterOp bezeichneten Mischmodi werden für Stifte und Pinsel mit Alphakomponenten nicht unterstützt. Auch das Einschalten des QPainter::Antialiasing Rendering-Hinweises deaktiviert die RasterOp-Modi effektiv.
Der gebräuchlichste Typ ist SourceOver (oft auch einfach als Alpha-Blending bezeichnet), bei dem das Quellpixel über das Zielpixel gemischt wird, so dass die Alphakomponente der Quelle die Durchsichtigkeit des Pixels definiert.
Mehrere Kompositionsmodi erfordern einen Alphakanal in den Quell- oder Zielbildern, um eine Wirkung zu erzielen. Für eine optimale Leistung wird das Bildformat Format_ARGB32_Premultiplied bevorzugt.
Wenn ein Kompositionsmodus eingestellt ist, gilt er für alle Maloperatoren, Stifte, Pinsel, Farbverläufe und Pixmap-/Bildzeichnungen.
Konstante | Wert | Beschreibung |
---|---|---|
QPainter::CompositionMode_SourceOver | 0 | Dies ist der Standardmodus. Der Alphawert der Quelle wird verwendet, um das Pixel über das Ziel zu mischen. |
QPainter::CompositionMode_DestinationOver | 1 | Das Alpha des Ziels wird verwendet, um es über die Quellpixel zu mischen. Dieser Modus ist die Umkehrung von CompositionMode_SourceOver. |
QPainter::CompositionMode_Clear | 2 | Die Pixel im Ziel werden unabhängig von der Quelle gelöscht (auf vollständig transparent gesetzt). |
QPainter::CompositionMode_Source | 3 | Die Ausgabe ist das Quellpixel. (Dies bedeutet einen einfachen Kopiervorgang und ist identisch mit SourceOver, wenn das Quellpixel undurchsichtig ist). |
QPainter::CompositionMode_Destination | 4 | Die Ausgabe ist das Zielpixel. Dies bedeutet, dass die Überblendung keine Wirkung hat. Dieser Modus ist die Umkehrung von CompositionMode_Source. |
QPainter::CompositionMode_SourceIn | 5 | Die Ausgabe ist die Quelle, wobei der Alphawert um den des Ziels reduziert wird. |
QPainter::CompositionMode_DestinationIn | 6 | Die Ausgabe ist das Ziel, bei dem das Alpha um das der Quelle reduziert ist. Dieser Modus ist die Umkehrung von CompositionMode_SourceIn. |
QPainter::CompositionMode_SourceOut | 7 | Die Ausgabe ist die Quelle, bei der das Alpha um den Kehrwert des Ziels reduziert ist. |
QPainter::CompositionMode_DestinationOut | 8 | Die Ausgabe ist das Ziel, bei dem das Alpha um den Kehrwert der Quelle reduziert ist. Dieser Modus ist die Umkehrung von CompositionMode_SourceOut. |
QPainter::CompositionMode_SourceAtop | 9 | Das Quellpixel wird über das Zielpixel gemischt, wobei das Alpha des Quellpixels um das Alpha des Zielpixels reduziert wird. |
QPainter::CompositionMode_DestinationAtop | 10 | Das Zielpixel wird über das Quellpixel gemischt, wobei das Alpha des Zielpixels um das Alpha des Zielpixels reduziert wird. Dieser Modus ist die Umkehrung von CompositionMode_SourceAtop. |
QPainter::CompositionMode_Xor | 11 | Die Quelle, deren Alphawert um den Kehrwert des Alphawertes des Ziels reduziert ist, wird mit dem Ziel verschmolzen, dessen Alphawert um den Kehrwert des Alphawertes der Quelle reduziert ist. CompositionMode_Xor ist nicht dasselbe wie das bitweise Xor. |
QPainter::CompositionMode_Plus | 12 | Sowohl das Alpha als auch die Farbe der Quell- und Zielpixel werden addiert. |
QPainter::CompositionMode_Multiply | 13 | Die Ausgabe ist die Quellfarbe multipliziert mit der Zielfarbe. Die Multiplikation einer Farbe mit Weiß lässt die Farbe unverändert, während die Multiplikation einer Farbe mit Schwarz Schwarz ergibt. |
QPainter::CompositionMode_Screen | 14 | Die Quell- und Zielfarben werden invertiert und dann multipliziert. Die Rasterung einer Farbe mit Weiß ergibt Weiß, während die Rasterung einer Farbe mit Schwarz die Farbe unverändert lässt. |
QPainter::CompositionMode_Overlay | 15 | Multipliziert oder rastert die Farben in Abhängigkeit von der Zielfarbe. Die Zielfarbe wird mit der Quellfarbe gemischt, um die Helligkeit oder Dunkelheit der Zielfarbe wiederzugeben. |
QPainter::CompositionMode_Darken | 16 | Die dunklere der Quell- und Zielfarben wird ausgewählt. |
QPainter::CompositionMode_Lighten | 17 | Die hellere der Quell- und Zielfarben wird ausgewählt. |
QPainter::CompositionMode_ColorDodge | 18 | Die Zielfarbe wird aufgehellt, um die Quellfarbe widerzuspiegeln. Bei einer schwarzen Quellfarbe bleibt die Zielfarbe unverändert. |
QPainter::CompositionMode_ColorBurn | 19 | Die Zielfarbe wird abgedunkelt, um die Quellfarbe widerzuspiegeln. Bei einer weißen Quellfarbe bleibt die Zielfarbe unverändert. |
QPainter::CompositionMode_HardLight | 20 | Multipliziert oder rastert die Farben in Abhängigkeit von der Quellfarbe. Eine helle Quellfarbe hellt die Zielfarbe auf, während eine dunkle Quellfarbe die Zielfarbe abdunkelt. |
QPainter::CompositionMode_SoftLight | 21 | Verdunkelt oder hellt die Farben in Abhängigkeit von der Quellfarbe auf. Ähnlich wie bei CompositionMode_HardLight. |
QPainter::CompositionMode_Difference | 22 | Subtrahiert die dunklere der beiden Farben von der helleren. Malen mit Weiß invertiert die Zielfarbe, während Malen mit Schwarz die Zielfarbe unverändert lässt. |
QPainter::CompositionMode_Exclusion | 23 | Ähnlich wie CompositionMode_Difference, aber mit einem geringeren Kontrast. Malen mit Weiß invertiert die Zielfarbe, während Malen mit Schwarz die Zielfarbe unverändert lässt. |
QPainter::RasterOp_SourceOrDestination | 24 | Führt eine bitweise ODER-Verknüpfung der Quell- und Zielpixel durch (src OR dst). |
QPainter::RasterOp_SourceAndDestination | 25 | Führt eine bitweise UND-Verknüpfung der Quell- und Zielpixel durch (src AND dst). |
QPainter::RasterOp_SourceXorDestination | 26 | Führt eine bitweise XOR-Operation an den Quell- und Zielpixeln durch (src XOR dst). |
QPainter::RasterOp_NotSourceAndNotDestination | 27 | Führt eine bitweise NOR-Operation an den Quell- und Zielpixeln durch ((NOT src) AND (NOT dst)). |
QPainter::RasterOp_NotSourceOrNotDestination | 28 | Führt eine bitweise NAND-Operation an den Quell- und Zielpixeln durch ((NOT src) OR (NOT dst)). |
QPainter::RasterOp_NotSourceXorDestination | 29 | Führt eine bitweise Operation durch, bei der die Quellpixel invertiert und dann mit den Zielpixeln XOR-verknüpft werden ((NOT src) XOR dst). |
QPainter::RasterOp_NotSource | 30 | Führt eine bitweise Operation durch, bei der die Quellpixel invertiert werden (NOT src). |
QPainter::RasterOp_NotSourceAndDestination | 31 | Führt eine bitweise Operation durch, bei der die Quelle invertiert und dann mit dem Ziel UND-verknüpft wird ((NOT src) AND dst). |
QPainter::RasterOp_SourceAndNotDestination | 32 | Führt eine bitweise Operation durch, bei der die Quelle mit den invertierten Zielpixeln UND-verknüpft wird (src UND (NICHT dst)). |
QPainter::RasterOp_NotSourceOrDestination | 33 | Führt eine bitweise Operation durch, bei der die Quelle invertiert und dann mit dem Ziel ODER verknüpft wird ((NOT src) OR dst). |
QPainter::RasterOp_ClearDestination | 35 | Die Pixel im Ziel werden unabhängig von der Quelle gelöscht (auf 0 gesetzt). |
QPainter::RasterOp_SetDestination | 36 | Die Pixel im Ziel werden gesetzt (auf 1 gesetzt), unabhängig von der Quelle. |
QPainter::RasterOp_NotDestination | 37 | Führt eine bitweise Operation durch, bei der die Zielpixel invertiert werden (NOT dst). |
QPainter::RasterOp_SourceOrNotDestination | 34 | Führt eine bitweise Operation durch, bei der die Quelle mit den invertierten Zielpixeln ODER-verknüpft wird (src ODER (NICHT dst)). |
Siehe auch compositionMode(), setCompositionMode(), Composition Modes, und Beispiel für Bildkomposition.
enum QPainter::PixmapFragmentHint
flags QPainter::PixmapFragmentHints
Konstante | Wert | Beschreibung |
---|---|---|
QPainter::OpaqueHint | 0x01 | Gibt an, dass die zu zeichnenden Pixmap-Fragmente undurchsichtig sind. Opake Fragmente sind potentiell schneller zu zeichnen. |
Der Typ PixmapFragmentHints ist ein Typedef für QFlags<PixmapFragmentHint>. Er speichert eine OR-Kombination von PixmapFragmentHint-Werten.
Siehe auch QPainter::drawPixmapFragments() und QPainter::PixmapFragment.
enum QPainter::RenderHint
flags QPainter::RenderHints
Renderhints werden verwendet, um Flags für QPainter anzugeben, die von einer bestimmten Engine beachtet werden können oder auch nicht.
Konstante | Wert | Beschreibung |
---|---|---|
QPainter::Antialiasing | 0x01 | Zeigt an, dass die Engine die Kanten von Primitiven nach Möglichkeit antialias darstellen soll. |
QPainter::TextAntialiasing | 0x02 | Gibt an, dass die Engine, wenn möglich, Text antialias darstellen soll. Um das Antialiasing für Text zwangsweise zu deaktivieren, sollten Sie diesen Hinweis nicht verwenden. Setzen Sie stattdessen QFont::NoAntialias auf die Stilstrategie Ihrer Schriftart. |
QPainter::SmoothPixmapTransform | 0x04 | Zeigt an, dass die Engine einen glatten Pixmap-Transformationsalgorithmus (wie z. B. bilinear) anstelle von Nearest Neighbor verwenden sollte. |
QPainter::VerticalSubpixelPositioning | 0x08 | Erlaubt die Positionierung von Text in Bruchteilen von Pixeln sowohl vertikal als auch horizontal, wenn dies von der Font-Engine unterstützt wird. Dies wird derzeit von Freetype auf allen Plattformen unterstützt, wenn die Hinting-Einstellung QFont::PreferNoHinting lautet, und auch auf macOS. Für die meisten Anwendungsfälle wird dies die visuelle Qualität nicht verbessern, kann aber den Speicherverbrauch erhöhen und die Leistung beim Rendern von Text etwas verringern. Es wird daher nicht empfohlen, dies zu aktivieren, es sei denn, der Anwendungsfall erfordert es. Ein solcher Anwendungsfall könnte das Ausrichten von Glyphen mit anderen visuellen Primitiven sein. Dieser Wert wurde in Qt 6.1 hinzugefügt. |
QPainter::LosslessImageRendering | 0x40 | Verwende ein verlustfreies Bildrendering, wann immer möglich. Derzeit wird dieser Hinweis nur verwendet, wenn QPainter verwendet wird, um eine PDF-Datei über QPrinter oder QPdfWriter auszugeben, wobei drawImage()/drawPixmap()-Aufrufe Bilder mit einem verlustfreien Kompressionsalgorithmus anstelle der verlustbehafteten JPEG-Kompression kodieren. Dieser Wert wurde in Qt 5.13 hinzugefügt. |
QPainter::NonCosmeticBrushPatterns | 0x80 | Wenn Sie mit einem Pinsel mit einem der vordefinierten Musterstile malen, transformieren Sie auch das Muster zusammen mit dem zu malenden Objekt. Die Voreinstellung ist, das Muster als kosmetisch zu behandeln, so dass die Pixel des Musters direkt auf die Pixel des Geräts abgebildet werden, unabhängig von aktiven Transformationen. Dieser Wert wurde in Qt 6.4 hinzugefügt. |
Der Typ RenderHints ist ein Typedef für QFlags<RenderHint>. Er speichert eine OR-Kombination von RenderHint-Werten.
Siehe auch renderHints(), setRenderHint(), und Rendering Quality.
Dokumentation der Mitgliedsfunktionen
QPainter::QPainter()
Konstruiert einen Maler.
[explicit]
QPainter::QPainter(QPaintDevice *device)
Konstruiert einen Maler, der sofort mit dem Malen der Farbe device beginnt.
Dieser Konstruktor ist praktisch für kurzlebige Painter, z.B. in einem QWidget::paintEvent() und sollte nur einmal verwendet werden. Der Konstruktor ruft begin() für Sie auf und der QPainter Destruktor ruft automatisch end() auf.
Hier ist ein Beispiel mit begin() und end():
void MyWidget::paintEvent(QPaintEvent *) { QPainter p; p.begin(this); p.drawLine(drawingCode); // drawing code p.end(); }
Das gleiche Beispiel mit diesem Konstruktor:
void MyWidget::paintEvent(QPaintEvent *) { QPainter p(this); p.drawLine(drawingCode); // drawing code }
Da der Konstruktor keine Rückmeldung geben kann, wenn die Initialisierung des Painters fehlgeschlagen ist, sollten Sie lieber begin() und end() verwenden, um auf externen Geräten, z.B. Druckern, zu malen.
[noexcept]
QPainter::~QPainter()
Zerstört den Maler.
const QBrush &QPainter::background() const
Gibt den aktuellen Hintergrundpinsel zurück.
Siehe auch setBackground() und Settings.
Qt::BGMode QPainter::backgroundMode() const
Gibt den aktuellen Hintergrundmodus zurück.
Siehe auch setBackgroundMode() und Settings.
bool QPainter::begin(QPaintDevice *device)
Beginnt mit dem Malen der Farbe device und gibt bei Erfolg true
zurück; andernfalls false
.
Beachten Sie, dass alle Painter-Einstellungen (setPen(), setBrush() usw.) auf Standardwerte zurückgesetzt werden, wenn begin() aufgerufen wird.
Bei den Fehlern, die auftreten können, handelt es sich um schwerwiegende Probleme, wie z. B. diese:
painter->begin(0); // impossible - paint device cannot be 0 QPixmap image(0, 0); painter->begin(&image); // impossible - image.isNull() == true; painter->begin(myWidget); painter2->begin(myWidget); // impossible - only one painter at a time
Beachten Sie, dass Sie in den meisten Fällen einen der Konstruktoren anstelle von begin() verwenden können, und dass end() automatisch bei der Zerstörung ausgeführt wird.
Warnung: Ein Malgerät kann immer nur von einem Maler gezeichnet werden.
Warnung: Das Malen auf einem QImage mit dem Format QImage::Format_Indexed8 wird nicht unterstützt.
Siehe auch end() und QPainter().
void QPainter::beginNativePainting()
Leert die Malpipeline und bereitet sich darauf vor, dass der Benutzer Befehle direkt an den zugrunde liegenden Grafikkontext sendet. Muss von einem Aufruf von endNativePainting() gefolgt werden.
Beachten Sie, dass nur die Zustände, die die zugrunde liegende Paint-Engine ändert, auf ihre jeweiligen Standardzustände zurückgesetzt werden. Die Zustände, die wir zurücksetzen, können sich von Release zu Release ändern. Die folgenden Zustände werden derzeit in der OpenGL 2-Engine zurückgesetzt:
- Blending ist deaktiviert
- die Tiefen-, Schablonen- und Scherentests sind deaktiviert
- die aktive Textureinheit wird auf 0 zurückgesetzt
- die Tiefenmaske, die Tiefenfunktion und die klare Tiefe werden auf ihre Standardwerte zurückgesetzt
- die Schablonenmaske, die Schablonenoperation und die Schablonenfunktion werden auf die Standardwerte zurückgesetzt
- die aktuelle Farbe wird auf einfarbig weiß zurückgesetzt
Wenn beispielsweise der OpenGL-Polygonmodus vom Benutzer innerhalb eines beginNativePaint()/endNativePainting()-Blocks geändert wird, wird er nicht durch endNativePainting() auf den Standardzustand zurückgesetzt. Hier ist ein Beispiel, das die Vermischung von Painter-Befehlen und rohen OpenGL-Befehlen zeigt:
QPainter painter(this); painter.fillRect(0, 0, 128, 128, Qt::green); painter.beginNativePainting(); glEnable(GL_SCISSOR_TEST); glScissor(0, 0, 64, 64); glClearColor(1, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); glDisable(GL_SCISSOR_TEST); painter.endNativePainting();
Siehe auch endNativePainting().
QRectF QPainter::boundingRect(const QRectF &rectangle, int flags, const QString &text)
Gibt das begrenzende Rechteck des text zurück, wie es erscheint, wenn es innerhalb des angegebenen rectangle mit dem angegebenen flags unter Verwendung des aktuell eingestellten font() gezeichnet wird; d.h. die Funktion sagt Ihnen, wo die Funktion drawText() zeichnen wird, wenn sie die gleichen Argumente erhält.
Wenn text nicht in das angegebene rectangle mit dem angegebenen flags passt, gibt die Funktion das gewünschte Rechteck zurück.
Das Argument flags ist ein bitweises ODER der folgenden Flags:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
Wenn mehrere der horizontalen oder mehrere der vertikalen Ausrichtungsflags gesetzt sind, ist die resultierende Ausrichtung undefiniert.
Siehe auch drawText(), Qt::Alignment, und Qt::TextFlag.
QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)
Dies ist eine überladene Funktion.
Gibt das Begrenzungsrechteck von text zurück, wie es erscheint, wenn es innerhalb des angegebenen rectangle mit dem angegebenen flags unter Verwendung des aktuell eingestellten font() gezeichnet wird.
QRectF QPainter::boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Dies ist eine überladene Funktion.
Anstatt die Flags als bitweises ODER von Qt::AlignmentFlag und Qt::TextFlag anzugeben, nimmt diese überladene Funktion ein option Argument. Die Klasse QTextOption bietet eine Beschreibung der allgemeinen Rich-Text-Eigenschaften.
Siehe auch QTextOption.
QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
Dies ist eine überladene Funktion.
Gibt das begrenzende Rechteck des angegebenen text zurück, wie es erscheint, wenn es innerhalb des Rechtecks gezeichnet wird, das an dem Punkt (x, y) mit der Breite w und der Höhe h beginnt.
const QBrush &QPainter::brush() const
Gibt den aktuellen Pinsel des Malers zurück.
Siehe auch QPainter::setBrush() und Settings.
QPoint QPainter::brushOrigin() const
Gibt den aktuell eingestellten Pinselursprung zurück.
Siehe auch setBrushOrigin() und Settings.
QRectF QPainter::clipBoundingRect() const
Gibt das Begrenzungsrechteck des aktuellen Clips zurück, wenn es einen Clip gibt; andernfalls wird ein leeres Rechteck zurückgegeben. Beachten Sie, dass der Ausschnittbereich in logischen Koordinaten angegeben wird.
Es ist nicht garantiert, dass das begrenzende Rechteck eng ist.
Siehe auch setClipRect(), setClipPath(), und setClipRegion().
QPainterPath QPainter::clipPath() const
Gibt den aktuellen Clip-Pfad in logischen Koordinaten zurück.
Warnung: QPainter speichert den kombinierten Clip nicht explizit, da dies vom zugrunde liegenden QPaintEngine erledigt wird. Der Pfad wird bei Bedarf neu erstellt und in das aktuelle logische Koordinatensystem transformiert. Dies ist eine potenziell teure Operation.
Siehe auch setClipPath(), clipRegion(), und setClipping().
QRegion QPainter::clipRegion() const
Gibt die aktuell eingestellte Clip-Region zurück. Beachten Sie, dass die Clip-Region in logischen Koordinaten angegeben wird.
Warnung: QPainter speichert den kombinierten Clip nicht explizit, da dies von der zugrunde liegenden QPaintEngine gehandhabt wird. Daher wird der Pfad bei Bedarf neu erstellt und in das aktuelle logische Koordinatensystem transformiert. Dies ist eine potenziell teure Operation.
Siehe auch setClipRegion(), clipPath(), und setClipping().
QTransform QPainter::combinedTransform() const
Gibt die Transformationsmatrix zurück, die die aktuelle Fenster-/Viewport- und Welttransformation kombiniert.
Siehe auch setWorldTransform(), setWindow(), und setViewport().
QPainter::CompositionMode QPainter::compositionMode() const
Gibt den aktuellen Kompositionsmodus zurück.
Siehe auch CompositionMode und setCompositionMode().
QPaintDevice *QPainter::device() const
Gibt das Malgerät zurück, auf dem dieser Maler gerade malt, oder nullptr
, wenn der Maler nicht aktiv ist.
Siehe auch isActive().
const QTransform &QPainter::deviceTransform() const
Gibt die Matrix zurück, die von logischen Koordinaten in Gerätekoordinaten des plattformabhängigen Malgeräts transformiert.
Diese Funktion wird nur benötigt, wenn plattformabhängige Painting-Befehle für das plattformabhängige Handle (Qt::HANDLE) verwendet werden und die Plattform die Transformationen nicht von Haus aus durchführt.
Das QPaintEngine::PaintEngineFeature enum kann abgefragt werden, um festzustellen, ob die Plattform die Transformationen durchführt oder nicht.
Siehe auch worldTransform() und QPaintEngine::hasFeature().
void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)
Zeichnet den Bogen, der durch die angegebenen rectangle, startAngle und spanAngle definiert ist.
Die startAngle und spanAngle müssen in 1/16 Grad angegeben werden, d.h. ein Vollkreis entspricht 5760 (16 * 360). Positive Werte für die Winkel bedeuten gegen den Uhrzeigersinn, während negative Werte den Uhrzeigersinn bedeuten. Der Nullpunkt liegt auf der 3-Uhr-Position.
![]() |
Siehe auch drawPie(), drawChord(), und Koordinatensystem.
void QPainter::drawArc(const QRect &rectangle, int startAngle, int spanAngle)
Dies ist eine überladene Funktion.
Zeichnet den Bogen, der durch die angegebenen rectangle, startAngle und spanAngle definiert ist.
void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)
Dies ist eine überladene Funktion.
Zeichnet den Bogen, der durch das bei (x, y) beginnende Rechteck mit den angegebenen width und height und den angegebenen startAngle und spanAngle definiert ist.
void QPainter::drawChord(const QRectF &rectangle, int startAngle, int spanAngle)
Zeichnet die Sehne, die durch die angegebenen rectangle, startAngle und spanAngle definiert ist. Die Sehne wird mit dem aktuellen brush() gefüllt.
startAngle und spanAngle müssen in 1/16 Grad angegeben werden, d.h. ein Vollkreis entspricht 5760 (16 * 360). Positive Werte für die Winkel bedeuten gegen den Uhrzeigersinn, während negative Werte den Uhrzeigersinn bedeuten. Der Nullpunkt liegt auf der 3-Uhr-Position.
![]() |
Siehe auch drawArc(), drawPie(), und Koordinatensystem.
void QPainter::drawChord(const QRect &rectangle, int startAngle, int spanAngle)
Dies ist eine überladene Funktion.
Zeichnet die Sehne, die durch die angegebenen rectangle, startAngle und spanAngle definiert ist.
void QPainter::drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
Dies ist eine überladene Funktion.
Zeichnet die Sehne, die durch das Rechteck definiert ist, das bei (x, y) beginnt, mit den angegebenen width und height, und den angegebenen startAngle und spanAngle.
void QPainter::drawConvexPolygon(const QPointF *points, int pointCount)
Zeichnet das konvexe Polygon, das durch die ersten pointCount Punkte im Array points definiert ist, unter Verwendung des aktuellen Stifts.
![]() |
Der erste Punkt ist implizit mit dem letzten Punkt verbunden, und das Polygon wird mit dem aktuellen brush() gefüllt. Wenn das gelieferte Polygon nicht konvex ist, d.h. es enthält mindestens einen Winkel größer als 180 Grad, sind die Ergebnisse undefiniert.
Auf einigen Plattformen (z.B. X11) kann die Funktion drawConvexPolygon() schneller sein als die Funktion drawPolygon().
Siehe auch drawPolygon(), drawPolyline(), und Koordinatensystem.
void QPainter::drawConvexPolygon(const QPolygon &polygon)
Dies ist eine überladene Funktion.
Zeichnet das durch polygon definierte konvexe Polygon mit dem aktuellen Stift und Pinsel.
void QPainter::drawConvexPolygon(const QPolygonF &polygon)
Dies ist eine überladene Funktion.
Zeichnet das durch polygon definierte konvexe Polygon mit dem aktuellen Stift und Pinsel.
void QPainter::drawConvexPolygon(const QPoint *points, int pointCount)
Dies ist eine überladene Funktion.
Zeichnet das konvexe Polygon, das durch die ersten pointCount Punkte im Array points definiert ist, unter Verwendung des aktuellen Stifts.
void QPainter::drawEllipse(const QRectF &rectangle)
Zeichnet die Ellipse, die durch die angegebene rectangle definiert ist.
Eine gefüllte Ellipse hat eine Größe von rectangle.size(). Eine gestrichelte Ellipse hat eine Größe von rectangle.size() plus der Stiftbreite.
Siehe auch drawPie() und Koordinatensystem.
void QPainter::drawEllipse(const QRect &rectangle)
Dies ist eine überladene Funktion.
Zeichnet die Ellipse, die durch die angegebene rectangle definiert ist.
void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)
Dies ist eine überladene Funktion.
Zeichnet die Ellipse an der Position center mit den Radien rx und ry.
void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry)
Dies ist eine überladene Funktion.
Zeichnet die Ellipse an der Position center mit den Radien rx und ry.
void QPainter::drawEllipse(int x, int y, int width, int height)
Dies ist eine überladene Funktion.
Zeichnet die Ellipse, die durch das bei (x, y) beginnende Rechteck mit den angegebenen width und height definiert ist.
void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
Zeichnet die durch glyphs dargestellten Glyphen an position. position gibt den Rand der Grundlinie für die Glyphenkette an. Die Glyphen werden aus der auf glyphs ausgewählten Schriftart und an den durch die Positionen in glyphs angegebenen Offsets abgerufen.
Siehe auch QGlyphRun::setRawFont(), QGlyphRun::setPositions(), und QGlyphRun::setGlyphIndexes().
void QPainter::drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
Zeichnet den rechteckigen Teil source der angegebenen image in das Rechteck target im Malgerät.
Hinweis: Das Bild wird so skaliert, dass es in das Rechteck passt, wenn die Größe des Bildes und des Rechtecks nicht übereinstimmen.
Hinweis: Siehe Drawing High Resolution Versions of Pixmaps and Images, wie dies von QImage::devicePixelRatio() beeinflusst wird.
Wenn das Bild geändert werden muss, um in ein Ergebnis mit geringerer Auflösung zu passen (z. B. Konvertierung von 32-Bit in 8-Bit), verwenden Sie flags, um anzugeben, wie Sie dies wünschen.
Siehe auch drawPixmap() und QImage::devicePixelRatio().
void QPainter::drawImage(const QPoint &point, const QImage &image)
Dies ist eine überladene Funktion.
Zeichnet die angegebene image unter der angegebenen point.
void QPainter::drawImage(const QPointF &point, const QImage &image)
Dies ist eine überladene Funktion.
Zeichnet die angegebene image unter der angegebenen point.
void QPainter::drawImage(const QRect &rectangle, const QImage &image)
Dies ist eine überladene Funktion.
Zeichnet das angegebene image in das angegebene rectangle.
Hinweis: Das Bild wird so skaliert, dass es in das Rechteck passt, wenn die Größe des Bildes und des Rechtecks nicht übereinstimmen.
void QPainter::drawImage(const QRectF &rectangle, const QImage &image)
Dies ist eine überladene Funktion.
Zeichnet das angegebene image in das angegebene rectangle.
Hinweis: Das Bild wird so skaliert, dass es in das Rechteck passt, wenn die Größe des Bildes und des Rechtecks nicht übereinstimmen.
void QPainter::drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
Dies ist eine überladene Funktion.
Zeichnet den rechteckigen Teil source des angegebenen image mit dem Ursprung am angegebenen point.
void QPainter::drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
Dies ist eine überladene Funktion.
Zeichnet den rechteckigen Teil source des angegebenen image mit dem Ursprung am angegebenen point.
void QPainter::drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
Dies ist eine überladene Funktion.
Zeichnet den rechteckigen Teil source der angegebenen image in das Rechteck target im Malgerät.
Hinweis: Das Bild wird so skaliert, dass es in das Rechteck passt, wenn die Größe des Bildes und des Rechtecks nicht übereinstimmen.
void QPainter::drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor)
Dies ist eine überladene Funktion.
Zeichnet ein Bild bei (x, y) durch Kopieren eines Teils von image in das Malgerät.
(x, y) gibt den Punkt oben links im Malgerät an, auf den gezeichnet werden soll. (sx, sy) gibt den oberen linken Punkt in image an, der gezeichnet werden soll. Die Vorgabe ist (0, 0).
(sw, sh) gibt die Größe des Bildes an, das gezeichnet werden soll. Die Vorgabe (0, 0) (und negativ) bedeutet, dass das Bild bis zum rechten unteren Rand reicht.
void QPainter::drawLine(const QLineF &line)
Zeichnet eine durch line definierte Linie.
Siehe auch drawLines(), drawPolyline(), und Koordinatensystem.
void QPainter::drawLine(const QLine &line)
Dies ist eine überladene Funktion.
Zeichnet eine durch line definierte Linie.
void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
Dies ist eine überladene Funktion.
Zeichnet eine Linie von p1 nach p2.
void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
Dies ist eine überladene Funktion.
Zeichnet eine Linie von p1 nach p2.
void QPainter::drawLine(int x1, int y1, int x2, int y2)
Dies ist eine überladene Funktion.
Zeichnet eine Linie von (x1, y1) nach (x2, y2).
void QPainter::drawLines(const QLineF *lines, int lineCount)
Zeichnet die ersten lineCount Zeilen im Array lines unter Verwendung des aktuellen Stifts.
Siehe auch drawLine() und drawPolyline().
void QPainter::drawLines(const QList<QLine> &lines)
Dies ist eine überladene Funktion.
Zeichnet den durch die Liste lines definierten Satz von Linien mit dem aktuellen Stift und Pinsel.
void QPainter::drawLines(const QList<QLineF> &lines)
Dies ist eine überladene Funktion.
Zeichnet den durch die Liste lines definierten Satz von Linien mit dem aktuellen Stift und Pinsel.
void QPainter::drawLines(const QList<QPoint> &pointPairs)
Dies ist eine überladene Funktion.
Zeichnet eine Linie für jedes Paar von Punkten im Vektor pointPairs unter Verwendung des aktuellen Stifts.
void QPainter::drawLines(const QList<QPointF> &pointPairs)
Dies ist eine überladene Funktion.
Zeichnet eine Linie für jedes Paar von Punkten im Vektor pointPairs unter Verwendung des aktuellen Stifts. Wenn das Array eine ungerade Anzahl von Punkten enthält, wird der letzte Punkt ignoriert.
void QPainter::drawLines(const QLine *lines, int lineCount)
Dies ist eine überladene Funktion.
Zeichnet die ersten lineCount Zeilen in das Array lines unter Verwendung des aktuellen Stifts.
void QPainter::drawLines(const QPoint *pointPairs, int lineCount)
Dies ist eine überladene Funktion.
Zeichnet die ersten lineCount Zeilen in das Array pointPairs unter Verwendung des aktuellen Stifts.
void QPainter::drawLines(const QPointF *pointPairs, int lineCount)
Dies ist eine überladene Funktion.
Zeichnet die ersten lineCount Linien im Array pointPairs unter Verwendung des aktuellen Stifts. Die Linien werden als Punktpaare angegeben, daher muss die Anzahl der Einträge in pointPairs mindestens lineCount * 2 betragen.
void QPainter::drawPath(const QPainterPath &path)
Zeichnet den angegebenen Painter path mit dem aktuellen Stift für die Kontur und dem aktuellen Pinsel für die Füllung.
![]() | QPainterPath path; path.moveTo(20, 80); path.lineTo(20, 30); path.cubicTo(80, 0, 50, 50, 80, 80); QPainter painter(this); painter.drawPath(path); |
Siehe auch das Beispiel Pfade des Malers und das Beispiel Vektordeformation.
void QPainter::drawPicture(const QPointF &point, const QPicture &picture)
Gibt die angegebene picture unter der angegebenen point wieder.
Die Klasse QPicture ist ein Malgerät, das QPainter Befehle aufzeichnet und wiedergibt. Ein Bild serialisiert die Malbefehle an ein IO-Gerät in einem plattformunabhängigen Format. Alles, was auf ein Widget oder eine Pixmap gemalt werden kann, kann auch in einem Bild gespeichert werden.
Diese Funktion tut genau dasselbe wie QPicture::play(), wenn sie mit point = QPointF(0, 0) aufgerufen wird.
Hinweis: Der Zustand des Malers wird von dieser Funktion beibehalten.
Siehe auch QPicture::play().
void QPainter::drawPicture(const QPoint &point, const QPicture &picture)
Dies ist eine überladene Funktion.
Gibt die angegebene picture unter der angegebenen point wieder.
void QPainter::drawPicture(int x, int y, const QPicture &picture)
Dies ist eine überladene Funktion.
Zeichnet die angegebene picture am Punkt (x, y).
void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
Zeichnet einen Kuchen, der durch die angegebenen rectangle, startAngle und spanAngle definiert ist.
Der Kreis wird mit dem aktuellen brush() gefüllt.
startAngle und spanAngle müssen in 1/16tel Grad angegeben werden, d.h. ein Vollkreis entspricht 5760 (16 * 360). Positive Werte für die Winkel bedeuten gegen den Uhrzeigersinn, während negative Werte den Uhrzeigersinn bedeuten. Der Nullpunkt liegt auf der 3-Uhr-Position.
![]() |
Siehe auch drawEllipse(), drawChord(), und Koordinatensystem.
void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle)
Dies ist eine überladene Funktion.
Zeichnet einen Kuchen, der durch die angegebenen rectangle, startAngle und und spanAngle definiert ist.
void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
Dies ist eine überladene Funktion.
Zeichnet die Torte, die durch das Rechteck definiert ist, das bei (x, y) beginnt, mit den angegebenen width und height, und den angegebenen startAngle und spanAngle.
void QPainter::drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
Zeichnet den rechteckigen Teil source der angegebenen pixmap in die angegebene target im Malgerät.
Hinweis: Die Pixmap wird so skaliert, dass sie in das Rechteck passt, wenn die Größe der Pixmap und des Rechtecks nicht übereinstimmen.
Hinweis: Siehe Drawing High Resolution Versions of Pixmaps and Images zu den Auswirkungen von QPixmap::devicePixelRatio().
Wenn pixmap ein QBitmap ist, wird es mit den Bits gezeichnet, die mit der Stiftfarbe "gesetzt" sind. Wenn backgroundMode gleich Qt::OpaqueMode ist, werden die "nicht gesetzten" Bits mit der Farbe des Hintergrundpinsels gezeichnet; wenn backgroundMode gleich Qt::TransparentMode ist, sind die "nicht gesetzten" Bits transparent. Das Zeichnen von Bitmaps mit Farbverläufen oder Texturen wird nicht unterstützt.
Siehe auch drawImage() und QPixmap::devicePixelRatio().
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)
Dies ist eine überladene Funktion.
Zeichnet das angegebene pixmap mit dem Ursprung am angegebenen point.
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)
Dies ist eine überladene Funktion.
Zeichnet das angegebene pixmap mit dem Ursprung am angegebenen point.
void QPainter::drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
Dies ist eine überladene Funktion.
Zeichnet das angegebene pixmap in das angegebene rectangle.
Hinweis: Die Pixmap wird so skaliert, dass sie in das Rechteck passt, wenn die Größe der Pixmap und des Rechtecks nicht übereinstimmen.
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)
Dies ist eine überladene Funktion.
Zeichnet den rechteckigen Teil source des angegebenen pixmap mit dem Ursprung am angegebenen point.
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
Dies ist eine überladene Funktion.
Zeichnet den rechteckigen Teil source des angegebenen pixmap mit dem Ursprung am angegebenen point.
void QPainter::drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)
Dies ist eine überladene Funktion.
Zeichnet den rechteckigen Teil source der angegebenen pixmap in die angegebene target im Malgerät.
Hinweis: Die Pixmap wird so skaliert, dass sie in das Rechteck passt, wenn die Größe der Pixmap und des Rechtecks nicht übereinstimmen.
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap)
Dies ist eine überladene Funktion.
Zeichnet das angegebene pixmap an der Position (x, y).
void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
Dies ist eine überladene Funktion.
Zeichnet das pixmap in das Rechteck an der Position (x, y) mit den angegebenen width und height.
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
Dies ist eine überladene Funktion.
Zeichnet eine Pixmap auf (x, y), indem sie einen Teil des angegebenen pixmap in das Malgerät kopiert.
(x, y) gibt den oberen linken Punkt im Malgerät an, auf den gezeichnet werden soll. (sx, sy) gibt den oberen linken Punkt in pixmap an, der gezeichnet werden soll. Die Vorgabe ist (0, 0).
(sw, sh) gibt die Größe der Pixmap an, die gezeichnet werden soll. Die Vorgabe (0, 0) (und negativ) bedeutet, dass die Pixmap bis zum unteren rechten Rand reicht.
void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
Dies ist eine überladene Funktion.
Zeichnet den rechteckigen Teil mit dem Ursprung (sx, sy), der Breite sw und der Höhe sh, des gegebenen pixmap, am Punkt (x, y), mit einer Breite von w und einer Höhe von h. Wenn sw oder sh gleich Null sind, wird die Breite/Höhe der Pixmap verwendet und um den Offset sx/sy angepasst;
void QPainter::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
Diese Funktion wird verwendet, um pixmap oder ein Unterrechteck von pixmap an mehreren Positionen mit unterschiedlicher Skalierung, Drehung und Deckkraft zu zeichnen. fragments ist ein Array von fragmentCount Elementen, die die Parameter angeben, die zum Zeichnen jedes Pixmap-Fragments verwendet werden. Der Parameter hints kann zur Übergabe von Zeichenhinweisen verwendet werden.
Diese Funktion ist potenziell schneller als mehrere Aufrufe von drawPixmap(), da das Backend Zustandsänderungen optimieren kann.
Siehe auch QPainter::PixmapFragment und QPainter::PixmapFragmentHint.
void QPainter::drawPoint(const QPointF &position)
Zeichnet einen einzelnen Punkt an der angegebenen Adresse position unter Verwendung der aktuellen Stiftfarbe.
Siehe auch Koordinatensystem.
void QPainter::drawPoint(const QPoint &position)
Dies ist eine überladene Funktion.
Zeichnet einen einzelnen Punkt an der angegebenen Adresse position unter Verwendung der aktuellen Stiftfarbe.
void QPainter::drawPoint(int x, int y)
Dies ist eine überladene Funktion.
Zeichnet einen einzelnen Punkt an der Position (x, y).
void QPainter::drawPoints(const QPointF *points, int pointCount)
Zeichnet die ersten pointCount Punkte in das Array points unter Verwendung der aktuellen Stiftfarbe.
Siehe auch Koordinatensystem.
void QPainter::drawPoints(const QPolygon &points)
Dies ist eine überladene Funktion.
Zeichnet die Punkte des Vektors points.
void QPainter::drawPoints(const QPolygonF &points)
Dies ist eine überladene Funktion.
Zeichnet die Punkte des Vektors points.
void QPainter::drawPoints(const QPoint *points, int pointCount)
Dies ist eine überladene Funktion.
Zeichnet die ersten pointCount Punkte im Array points unter Verwendung der aktuellen Stiftfarbe.
void QPainter::drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Zeichnet das Polygon, das durch die ersten pointCount Punkte im Array points definiert ist, mit dem aktuellen Stift und Pinsel.
![]() |
Der erste Punkt ist implizit mit dem letzten Punkt verbunden, und das Polygon wird mit dem aktuellen brush() gefüllt.
Wenn fillRule gleich Qt::WindingFill ist, wird das Polygon mit dem gewundenen Füllalgorithmus gefüllt. Wenn fillRule gleich Qt::OddEvenFill ist, wird das Polygon mit dem Algorithmus für ungerade und gerade Füllungen gefüllt. Unter Qt::FillRule finden Sie eine ausführlichere Beschreibung dieser Füllregeln.
Siehe auch drawConvexPolygon(), drawPolyline(), und Koordinatensystem.
void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Dies ist eine überladene Funktion.
Zeichnet das durch die angegebene points definierte Polygon unter Verwendung der Füllregel fillRule.
void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
Dies ist eine überladene Funktion.
Zeichnet das durch die angegebene points definierte Polygon unter Verwendung der Füllregel fillRule.
void QPainter::drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
Dies ist eine überladene Funktion.
Zeichnet das Polygon, das durch die ersten pointCount Punkte im Array points definiert ist.
void QPainter::drawPolyline(const QPointF *points, int pointCount)
Zeichnet die Polylinie, die durch die ersten pointCount Punkte in points definiert ist, unter Verwendung des aktuellen Stifts.
Beachten Sie, dass im Gegensatz zur Funktion drawPolygon() der letzte Punkt nicht mit dem ersten verbunden ist und die Polylinie auch nicht gefüllt ist.
Siehe auch drawLines(), drawPolygon(), und Koordinatensystem.
void QPainter::drawPolyline(const QPolygon &points)
Dies ist eine überladene Funktion.
Zeichnet die durch die angegebene points definierte Polylinie unter Verwendung des aktuellen Stifts.
void QPainter::drawPolyline(const QPolygonF &points)
Dies ist eine überladene Funktion.
Zeichnet die durch die angegebene points definierte Polylinie unter Verwendung des aktuellen Stifts.
void QPainter::drawPolyline(const QPoint *points, int pointCount)
Dies ist eine überladene Funktion.
Zeichnet die Polylinie, die durch die ersten pointCount Punkte in points definiert ist, unter Verwendung des aktuellen Stifts.
void QPainter::drawRect(const QRectF &rectangle)
Zeichnet das aktuelle rectangle mit dem aktuellen Stift und Pinsel.
Ein gefülltes Rechteck hat eine Größe von rectangle.size(). Ein gestrichenes Rechteck hat eine Größe von rectangle.size() plus der Stiftbreite.
Siehe auch drawRects(), drawPolygon(), und Koordinatensystem.
void QPainter::drawRect(const QRect &rectangle)
Dies ist eine überladene Funktion.
Zeichnet die aktuelle rectangle mit dem aktuellen Stift und Pinsel.
void QPainter::drawRect(int x, int y, int width, int height)
Dies ist eine überladene Funktion.
Zeichnet ein Rechteck mit der linken oberen Ecke bei (x, y) und mit den angegebenen width und height.
void QPainter::drawRects(const QRectF *rectangles, int rectCount)
Zeichnet die erste rectCount der angegebenen rectangles mit dem aktuellen Stift und Pinsel.
Siehe auch drawRect().
void QPainter::drawRects(const QList<QRect> &rectangles)
Dies ist eine überladene Funktion.
Zeichnet die angegebene rectangles mit dem aktuellen Stift und Pinsel.
void QPainter::drawRects(const QList<QRectF> &rectangles)
Dies ist eine überladene Funktion.
Zeichnet die angegebene rectangles mit dem aktuellen Stift und Pinsel.
void QPainter::drawRects(const QRect *rectangles, int rectCount)
Dies ist eine überladene Funktion.
Zeichnet die erste rectCount der angegebenen rectangles mit dem aktuellen Stift und Pinsel.
void QPainter::drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Zeichnet das angegebene Rechteck rect mit abgerundeten Ecken.
Die Argumente xRadius und yRadius geben die Radien der Ellipsen an, die die Ecken des abgerundeten Rechtecks definieren. Wenn mode Qt::RelativeSize ist, werden xRadius und yRadius in Prozent der halben Rechteckbreite bzw. -höhe angegeben und sollten im Bereich von 0,0 bis 100,0 liegen.
Ein gefülltes Rechteck hat eine Größe von rect.size(). Ein gestrichenes Rechteck hat eine Größe von rect.size() plus der Stiftbreite.
![]() |
Siehe auch drawRect() und QPen.
void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Dies ist eine überladene Funktion.
Zeichnet das angegebene Rechteck rect mit abgerundeten Ecken.
void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Dies ist eine überladene Funktion.
Zeichnet das angegebene Rechteck x, y, w, h mit abgerundeten Ecken.
void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
Zeichnet die angegebene staticText unter der angegebenen topLeftPosition.
Der Text wird unter Verwendung der im Painter eingestellten Schriftart und Transformation gezeichnet. Wenn die Schriftart und/oder die Transformation, die auf dem Painter eingestellt sind, sich von denen unterscheiden, die verwendet werden, um das Layout von QStaticText zu initialisieren, dann muss das Layout neu berechnet werden. Verwenden Sie QStaticText::prepare(), um staticText mit der Schriftart und der Transformation zu initialisieren, mit der es später gezeichnet werden soll.
Wenn topLeftPosition nicht derselbe ist, wie bei der Initialisierung von staticText oder beim letzten Zeichnen, dann wird es einen leichten Overhead geben, wenn der Text an seine neue Position übersetzt wird.
Hinweis: Wenn die Transformation des Malers nicht affin ist, dann wird staticText mit regulären Aufrufen von drawText() gezeichnet, wodurch jegliches Potenzial für eine Leistungsverbesserung verloren geht.
Hinweis: Die y-Position wird als Oberkante der Schrift verwendet.
Siehe auch QStaticText.
void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
Dies ist eine überladene Funktion.
Zeichnet die staticText an der topLeftPosition.
Hinweis: Die y-Position wird als oberer Rand der Schrift verwendet.
void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)
Dies ist eine überladene Funktion.
Zeichnet die staticText an den Koordinaten left und top.
Hinweis: Die y-Position wird als oberer Rand der Schrift verwendet.
void QPainter::drawText(const QPointF &position, const QString &text)
Zeichnet die angegebene text mit der aktuell definierten Textrichtung, beginnend mit der angegebenen position.
Diese Funktion kann das Zeilenumbruchzeichen (\n) nicht verarbeiten, da sie Text nicht in mehrere Zeilen umbrechen und das Zeilenumbruchzeichen nicht anzeigen kann. Verwenden Sie stattdessen die QPainter::drawText()-Überladung, die ein Rechteck annimmt, wenn Sie mehrere Textzeilen mit dem Zeilenumbruchzeichen zeichnen wollen oder wenn Sie den Text umbrechen wollen.
Standardmäßig zeichnet QPainter den Text anti-aliased.
Hinweis: Die y-Position wird als Grundlinie der Schrift verwendet.
Siehe auch setFont() und setPen().
void QPainter::drawText(const QPoint &position, const QString &text)
Dies ist eine überladene Funktion.
Zeichnet die angegebene text mit der aktuell definierten Textrichtung, beginnend mit der angegebenen position.
Standardmäßig zeichnet QPainter den Text anti-aliased.
Hinweis: Die y-Position wird als Grundlinie der Schrift verwendet.
Siehe auch setFont() und setPen().
void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
Dies ist eine überladene Funktion.
Zeichnet das angegebene text in der angegebenen rectangle unter Verwendung der option, um seine Positionierung, Richtung und Ausrichtung zu steuern. Die Optionen, die in option angegeben werden, überschreiben die Optionen, die für das QPainter Objekt selbst festgelegt wurden.
Standardmäßig zeichnet QPainter den Text anti-aliased.
Hinweis: Die y-Koordinate von rectangle wird als oberer Rand der Schrift verwendet.
Siehe auch setFont() und setPen().
void QPainter::drawText(int x, int y, const QString &text)
Dies ist eine überladene Funktion.
Zeichnet die angegebene text an der Position (x, y), unter Verwendung der aktuell definierten Textrichtung des Malers.
Standardmäßig zeichnet QPainter den Text anti-aliased.
Hinweis: Die y-Position wird als Grundlinie der Schrift verwendet.
Siehe auch setFont() und setPen().
void QPainter::drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
Dies ist eine überladene Funktion.
Zeichnet den angegebenen text innerhalb des angegebenen rectangle entsprechend dem angegebenen flags.
boundingRect (falls nicht null) wird auf den Wert gesetzt, den das Begrenzungsrechteck haben sollte, um den gesamten Text zu umschließen. In der folgenden Abbildung stellt die gepunktete Linie beispielsweise boundingRect dar, wie sie von der Funktion berechnet wurde, und die gestrichelte Linie stellt rectangle dar:
![]() | QPainter painter(this); QFont font = painter.font(); font.setPixelSize(48); painter.setFont(font); const QRect rectangle = QRect(0, 0, 100, 50); QRect boundingRect; painter.drawText(rectangle, 0, tr("Hello"), &boundingRect); QPen pen = painter.pen(); pen.setStyle(Qt::DotLine); painter.setPen(pen); painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width())); pen.setStyle(Qt::DashLine); painter.setPen(pen); painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Standardmäßig zeichnet QPainter den Text mit Anti-Aliasing.
Hinweis: Die y-Koordinate von rectangle wird als oberer Rand der Schrift verwendet.
Siehe auch setFont() und setPen().
void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
Dies ist eine überladene Funktion.
Zeichnet die angegebene text innerhalb der angegebenen rectangle. Die rectangle zusammen mit der Ausrichtung flags definiert die Anker für die text.
![]() | QPainter painter(this); painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject")); |
Der Wert boundingRect (falls nicht null) wird auf den Wert des Begrenzungsrechtecks gesetzt, das den gesamten Text umschließen soll. In der folgenden Abbildung stellt die gepunktete Linie beispielsweise boundingRect dar, wie von der Funktion berechnet, und die gestrichelte Linie rectangle:
![]() | QPainter painter(this); QFont font = painter.font(); font.setPixelSize(48); painter.setFont(font); const QRect rectangle = QRect(0, 0, 100, 50); QRect boundingRect; painter.drawText(rectangle, 0, tr("Hello"), &boundingRect); QPen pen = painter.pen(); pen.setStyle(Qt::DotLine); painter.setPen(pen); painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width())); pen.setStyle(Qt::DashLine); painter.setPen(pen); painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Das Argument flags ist ein bitweises ODER der folgenden Flags:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextDontClip
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
Standardmäßig zeichnet QPainter Text mit Anti-Aliasing.
Hinweis: Die y-Koordinate von rectangle wird als oberer Rand der Schrift verwendet.
Siehe auch Qt::AlignmentFlag, Qt::TextFlag, boundingRect(), und layoutDirection().
void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
Dies ist eine überladene Funktion.
Zeichnet den angegebenen text innerhalb des Rechtecks mit Ursprung (x, y), width und height.
boundingRect (falls nicht null) wird auf den Wert gesetzt, den das begrenzende Rechteck haben sollte, um den gesamten Text zu umschließen. In der folgenden Abbildung stellt zum Beispiel die gepunktete Linie boundingRect dar, wie sie von der Funktion berechnet wurde, und die gestrichelte Linie stellt das Rechteck dar, das durch x, y, width und height definiert ist:
![]() | QPainter painter(this); QFont font = painter.font(); font.setPixelSize(48); painter.setFont(font); const QRect rectangle = QRect(0, 0, 100, 50); QRect boundingRect; painter.drawText(rectangle, 0, tr("Hello"), &boundingRect); QPen pen = painter.pen(); pen.setStyle(Qt::DotLine); painter.setPen(pen); painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width())); pen.setStyle(Qt::DashLine); painter.setPen(pen); painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width())); |
Das Argument flags ist ein bitweises ODER der folgenden Flags:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
Standardmäßig zeichnet QPainter den Text anti-aliased.
Hinweis: Die y-Position wird als oberer Rand der Schrift verwendet.
Siehe auch Qt::AlignmentFlag, Qt::TextFlag, setFont(), und setPen().
void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
Zeichnet ein gekacheltes pixmap, innerhalb des angegebenen rectangle mit dem Ursprung am angegebenen position.
Der Aufruf von drawTiledPixmap() ähnelt dem mehrmaligen Aufruf von drawPixmap(), um einen Bereich mit einer Pixmap zu füllen (zu kacheln), ist aber je nach dem zugrunde liegenden Fenstersystem potenziell viel effizienter.
drawTiledPixmap() erzeugt auf Bildschirmen mit hoher Auflösung (mit devicePixelRatio > 1) das gleiche visuelle Kachelmuster wie auf Bildschirmen mit normaler Auflösung. Stellen Sie das devicePixelRatio auf pixmap ein, um die Kachelgröße zu steuern. Eine Einstellung von 2 halbiert beispielsweise die Kachelbreite und -höhe (sowohl auf 1x- als auch auf 2x-Displays) und erzeugt eine hochauflösende Ausgabe auf 2x-Displays.
Der position Offset ist immer im Maler-Koordinatensystem, unabhängig von der Anzeige devicePixelRatio.
Siehe auch drawPixmap().
void QPainter::drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = QPoint())
Dies ist eine überladene Funktion.
Zeichnet ein gekacheltes pixmap, innerhalb des angegebenen rectangle mit dem Ursprung am angegebenen position.
void QPainter::drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
Dies ist eine überladene Funktion.
Zeichnet ein gekacheltes pixmap in das angegebene Rechteck.
(x, y) gibt den oberen linken Punkt im Malgerät an, auf den gezeichnet werden soll; mit den gegebenen width und height. (sx, sy) gibt den oberen linken Punkt im pixmap an, der gezeichnet werden soll; der Standardwert ist (0, 0).
bool QPainter::end()
Beendet das Malen. Alle beim Malen verwendeten Ressourcen werden freigegeben. Normalerweise müssen Sie dies nicht aufrufen, da es durch den Destruktor aufgerufen wird.
Gibt true
zurück, wenn der Painter nicht mehr aktiv ist; andernfalls false
.
Siehe auch begin() und isActive().
void QPainter::endNativePainting()
Stellt den Painter nach der manuellen Ausgabe von nativen Malbefehlen wieder her. Lässt den Painter jeden nativen Zustand wiederherstellen, auf den er sich verlässt, bevor er andere Painter-Befehle aufruft.
Siehe auch beginNativePainting().
void QPainter::eraseRect(const QRectF &rectangle)
Löscht den Bereich innerhalb des angegebenen rectangle. Äquivalent zum Aufruf von
fillRect(rectangle, background());
Siehe auch fillRect().
void QPainter::eraseRect(const QRect &rectangle)
Dies ist eine überladene Funktion.
Löscht den Bereich innerhalb des angegebenen rectangle.
void QPainter::eraseRect(int x, int y, int width, int height)
Dies ist eine überladene Funktion.
Löscht den Bereich innerhalb des Rechtecks beginnend bei (x, y) mit den angegebenen width und height.
void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)
Füllt die angegebene path unter Verwendung der angegebenen brush. Der Umriss wird nicht gezeichnet.
Alternativ können Sie anstelle von QBrush auch QColor angeben; der Konstruktor QBrush (mit dem Argument QColor ) erzeugt automatisch einen einfarbigen Musterpinsel.
Siehe auch drawPath().
void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)
Füllt den angegebenen rectangle mit dem angegebenen brush.
Alternativ können Sie ein QColor anstelle eines QBrush angeben; der QBrush Konstruktor (mit einem QColor Argument) wird automatisch einen einfarbigen Musterpinsel erzeugen.
Siehe auch drawRect().
void QPainter::fillRect(const QRect &rectangle, QGradient::Preset preset)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit dem angegebenen Gradienten preset.
void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit dem angegebenen Pinsel style.
void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit der angegebenen color.
void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit der angegebenen brush.
void QPainter::fillRect(const QRect &rectangle, const QColor &color)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit der angegebenen color.
void QPainter::fillRect(const QRectF &rectangle, QGradient::Preset preset)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit dem angegebenen Gradienten preset.
void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle style)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit dem angegebenen Pinsel style.
void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit der angegebenen color.
void QPainter::fillRect(const QRectF &rectangle, const QColor &color)
Dies ist eine überladene Funktion.
Füllt die angegebene rectangle mit der angegebenen color.
void QPainter::fillRect(int x, int y, int width, int height, QGradient::Preset preset)
Dies ist eine überladene Funktion.
Füllt das Rechteck beginnend bei (x, y) mit den angegebenen width und height, unter Verwendung des angegebenen Gradienten preset.
void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
Dies ist eine überladene Funktion.
Füllt das Rechteck beginnend bei (x, y) mit den angegebenen width und height, unter Verwendung des angegebenen Pinsels style.
void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
Dies ist eine überladene Funktion.
Füllt das Rechteck beginnend bei (x, y) mit den angegebenen width und height, unter Verwendung des angegebenen color.
void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)
Dies ist eine überladene Funktion.
Füllt das Rechteck beginnend bei (x, y) mit den angegebenen width und height, unter Verwendung des angegebenen brush.
void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)
Dies ist eine überladene Funktion.
Füllt das Rechteck beginnend bei (x, y) mit den angegebenen width und height, unter Verwendung des angegebenen color.
const QFont &QPainter::font() const
Gibt die aktuell eingestellte Schriftart zurück, die zum Zeichnen von Text verwendet wird.
Siehe auch setFont(), drawText(), und Settings.
QFontInfo QPainter::fontInfo() const
Gibt die Schriftartinformationen für den Painter zurück, wenn der Painter aktiv ist. Andernfalls ist der Rückgabewert undefiniert.
Siehe auch font(), isActive(), und Settings.
QFontMetrics QPainter::fontMetrics() const
Gibt die Schriftmetrik für den Painter zurück, wenn der Painter aktiv ist. Andernfalls ist der Rückgabewert undefiniert.
Siehe auch font(), isActive(), und Settings.
bool QPainter::hasClipping() const
Gibt true
zurück, wenn die Beschneidung eingestellt wurde; andernfalls false
.
Siehe auch setClipping() und Clipping.
bool QPainter::isActive() const
Gibt true
zurück, wenn begin() aufgerufen wurde und end() noch nicht aufgerufen wurde; andernfalls wird false
zurückgegeben.
Siehe auch begin() und QPaintDevice::paintingActive().
Qt::LayoutDirection QPainter::layoutDirection() const
Gibt die vom Painter beim Zeichnen von Text verwendete Layout-Richtung zurück.
Siehe auch QTextOption::textDirection(), setLayoutDirection(), drawText(), und Settings.
qreal QPainter::opacity() const
Gibt die Deckkraft des Malers zurück. Der Standardwert ist 1.
Siehe auch setOpacity().
QPaintEngine *QPainter::paintEngine() const
Gibt die Paint-Engine zurück, mit der der Painter gerade arbeitet, wenn der Painter aktiv ist; andernfalls 0.
Siehe auch isActive().
const QPen &QPainter::pen() const
Gibt den aktuellen Stift des Malers zurück.
Siehe auch setPen() und Settings.
QPainter::RenderHints QPainter::renderHints() const
Gibt ein Flag zurück, das die Rendering-Hinweise angibt, die für diesen Painter gesetzt sind.
Siehe auch setRenderHints(), testRenderHint(), und Rendering Quality.
void QPainter::resetTransform()
Setzt alle Transformationen zurück, die mit translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() und setWindow() vorgenommen wurden.
Siehe auch Coordinate Transformations.
void QPainter::restore()
Stellt den aktuellen Zustand des Malers wieder her (holt einen gespeicherten Zustand vom Stapel).
Siehe auch save().
void QPainter::rotate(qreal angle)
Dreht das Koordinatensystem im Uhrzeigersinn. Der angegebene Parameter angle ist in Grad.
Siehe auch setWorldTransform() und Coordinate Transformations.
void QPainter::save()
Speichert den aktuellen Zustand des Malers (schiebt den Zustand auf einen Stapel). Auf ein save() muss eine entsprechende restore() folgen; die Funktion end() baut den Stack wieder ab.
Siehe auch restore().
void QPainter::scale(qreal sx, qreal sy)
Skaliert das Koordinatensystem um (sx, sy).
Siehe auch setWorldTransform() und Coordinate Transformations.
void QPainter::setBackground(const QBrush &brush)
Setzt den Hintergrundpinsel des Malers auf den angegebenen brush.
Der Hintergrundpinsel ist der Pinsel, der beim Zeichnen von opakem Text, gestrichelten Linien und Bitmaps ausgefüllt wird. Im Modus "Transparenter Hintergrund" (Standardeinstellung) hat der Hintergrundpinsel keine Wirkung.
Siehe auch background(), setBackgroundMode(), und Settings.
void QPainter::setBackgroundMode(Qt::BGMode mode)
Setzt den Hintergrundmodus des Malers auf den angegebenen mode
Qt::TransparentMode (die Voreinstellung) zeichnet gepunktete Linien und Text, ohne die Hintergrundpixel zu setzen. Qt::OpaqueMode füllt diese Bereiche mit der aktuellen Hintergrundfarbe.
Beachten Sie, dass Sie QPixmap::setMask() verwenden müssen, um eine Bitmap oder Pixmap transparent zu zeichnen.
Siehe auch backgroundMode(), setBackground(), und Settings.
void QPainter::setBrush(const QBrush &brush)
Setzt den Pinsel des Malers auf den angegebenen brush.
Der Malerpinsel bestimmt, wie Formen gefüllt werden.
Siehe auch brush() und Settings.
void QPainter::setBrush(Qt::BrushStyle style)
Dies ist eine überladene Funktion.
Setzt den Pinsel des Malers auf schwarze Farbe und die angegebene style.
void QPainter::setBrushOrigin(const QPointF &position)
Setzt den Pinselursprung auf position.
Der Pinselursprung spezifiziert die (0, 0) Koordinate des Pinsels des Malers.
Beachten Sie, dass brushOrigin() in Qt 3 notwendig war, um den Hintergrund des Elternteils für ein Widget zu übernehmen. Dies ist nun nicht mehr der Fall, da der Qt 4 Painter den Hintergrund nicht malt, es sei denn, Sie weisen ihn explizit an, dies zu tun, indem Sie die Eigenschaft autoFillBackground des Widgets auf true setzen.
Siehe auch brushOrigin() und Settings.
void QPainter::setBrushOrigin(const QPoint &position)
Dies ist eine überladene Funktion.
Setzt den Ursprung des Pinsels auf den angegebenen position.
void QPainter::setBrushOrigin(int x, int y)
Dies ist eine überladene Funktion.
Setzt den Ursprung des Pinsels auf den Punkt (x, y).
void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
Aktiviert das Clipping und setzt den Clip-Pfad für den Painter auf den angegebenen path mit dem Clip operation.
Beachten Sie, dass der Clip-Pfad in logischen (Maler-)Koordinaten angegeben wird.
Siehe auch clipPath(), clipRegion(), und Clipping.
void QPainter::setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
Aktiviert das Clipping und setzt den Clip-Bereich auf die angegebene rectangle unter Verwendung des angegebenen Clips operation. In der Standardeinstellung wird das aktuelle Clip-Rechteck ersetzt.
Beachten Sie, dass das Clip-Rechteck in logischen (Maler-)Koordinaten angegeben wird.
Siehe auch clipRegion(), setClipping(), und Clipping.
void QPainter::setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)
Aktiviert das Clipping und setzt den Clip-Bereich auf das Rechteck beginnend bei (x, y) mit den angegebenen width und height.
void QPainter::setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
Dies ist eine überladene Funktion.
Aktiviert das Clipping und setzt den Clip-Bereich auf die angegebene rectangle unter Verwendung des angegebenen Clips operation.
void QPainter::setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip)
Setzt den Clip-Bereich auf die angegebene region unter Verwendung des angegebenen Clips operation. In der Standardeinstellung wird der aktuelle Clip-Bereich ersetzt.
Beachten Sie, dass der Ausschnittbereich in logischen Koordinaten angegeben wird.
Siehe auch clipRegion(), setClipRect(), und Clipping.
void QPainter::setClipping(bool enable)
Aktiviert das Clipping, wenn enable true ist, oder deaktiviert das Clipping, wenn enable false ist.
Siehe auch hasClipping() und Clipping.
void QPainter::setCompositionMode(QPainter::CompositionMode mode)
Setzt den Kompositionsmodus auf die angegebene mode.
Achtung! Nur ein QPainter, das auf einem QImage läuft, unterstützt alle Kompositionsmodi vollständig. Die RasterOp-Modi werden für X11 unterstützt, wie in compositionMode() beschrieben.
Siehe auch compositionMode().
void QPainter::setFont(const QFont &font)
Setzt die Schriftart des Malers auf die angegebene font.
Diese Schriftart wird von den nachfolgenden Funktionen drawText() verwendet. Die Textfarbe ist die gleiche wie die Stiftfarbe.
Wenn Sie eine Schriftart einstellen, die nicht verfügbar ist, findet Qt eine naheliegende Übereinstimmung. font() gibt das zurück, was Sie mit setFont() eingestellt haben und fontInfo() gibt die tatsächlich verwendete Schriftart zurück (die dieselbe sein kann).
Siehe auch font(), drawText(), und Settings.
void QPainter::setLayoutDirection(Qt::LayoutDirection direction)
Setzt die Layout-Richtung, die der Painter beim Zeichnen von Text verwendet, auf die angegebene direction.
Der Standardwert ist Qt::LayoutDirectionAuto, der die Richtung implizit aus dem gezeichneten Text bestimmt.
Siehe auch QTextOption::setTextDirection(), layoutDirection(), drawText(), und Settings.
void QPainter::setOpacity(qreal opacity)
Setzt die Deckkraft des Malers auf opacity. Der Wert sollte im Bereich von 0,0 bis 1,0 liegen, wobei 0,0 vollständig transparent und 1,0 vollständig undurchsichtig ist.
Die für den Painter eingestellte Deckkraft gilt für alle Zeichenoperationen einzeln.
Siehe auch opacity().
void QPainter::setPen(const QPen &pen)
Setzt den Stift des Malers auf die angegebene pen.
pen legt fest, wie Linien und Umrisse gezeichnet werden sollen, und definiert auch die Textfarbe.
Siehe auch pen() und Settings.
void QPainter::setPen(Qt::PenStyle style)
Dies ist eine überladene Funktion.
Setzt den Stift des Malers auf die angegebene style, Breite 1 und schwarze Farbe.
void QPainter::setPen(const QColor &color)
Dies ist eine überladene Funktion.
Setzt den Stift des Malers auf den Stil Qt::SolidLine, die Breite 1 und den angegebenen color.
void QPainter::setRenderHint(QPainter::RenderHint hint, bool on = true)
Setzt den angegebenen Render hint auf den Painter, wenn on wahr ist; andernfalls wird der Render-Hinweis gelöscht.
Siehe auch setRenderHints(), renderHints(), und Rendering Quality.
void QPainter::setRenderHints(QPainter::RenderHints hints, bool on = true)
Setzt den angegebenen Render hints auf den Painter, wenn on wahr ist; andernfalls werden die Render-Hinweise gelöscht.
Siehe auch setRenderHint(), renderHints(), und Rendering Quality.
void QPainter::setTransform(const QTransform &transform, bool combine = false)
Setzt die Welttransformationsmatrix. Wenn combine wahr ist, wird die angegebene transform mit der aktuellen Matrix kombiniert; andernfalls ersetzt sie die aktuelle Matrix.
Siehe auch transform() und setWorldTransform().
void QPainter::setViewTransformEnabled(bool enable)
Aktiviert die Ansichtsumwandlung, wenn enable wahr ist, oder deaktiviert die Ansichtsumwandlung, wenn enable falsch ist.
Siehe auch viewTransformEnabled() und Window-Viewport Conversion.
void QPainter::setViewport(const QRect &rectangle)
Setzt das Viewport-Rechteck des Painters auf das angegebene rectangle und aktiviert View-Transformationen.
Das Ansichtsfenster-Rechteck ist Teil der Ansichtstransformation. Das Ansichtsfenster spezifiziert das Gerätekoordinatensystem. Seine Schwester, die window(), gibt das logische Koordinatensystem an.
Das Standard-Rechteck des Ansichtsfensters ist das gleiche wie das Rechteck des Geräts.
Siehe auch viewport(), viewTransformEnabled(), und Fenster-Ansichtsfenster-Konvertierung.
void QPainter::setViewport(int x, int y, int width, int height)
Dies ist eine überladene Funktion.
Setzt das Ansichtsfenster-Rechteck des Malers auf das Rechteck beginnend bei (x, y) mit den angegebenen width und height.
void QPainter::setWindow(const QRect &rectangle)
Setzt das Fenster des Malers auf die angegebene rectangle und aktiviert Ansichtstransformationen.
Das Fensterrechteck ist Teil der Ansichtstransformation. Das Fenster gibt das logische Koordinatensystem an. Seine Schwester, die viewport(), gibt das Gerätekoordinatensystem an.
Das Standard-Fensterrechteck ist das gleiche wie das Geräte-Rechteck.
Siehe auch window(), viewTransformEnabled(), und Fenster-Ansichtsfenster-Umwandlung.
void QPainter::setWindow(int x, int y, int width, int height)
Dies ist eine überladene Funktion.
Setzt das Fenster des Malers auf das Rechteck beginnend bei (x, y) und den angegebenen width und height.
void QPainter::setWorldMatrixEnabled(bool enable)
Aktiviert Transformationen, wenn enable wahr ist, oder deaktiviert Transformationen, wenn enable falsch ist. Die Welttransformationsmatrix wird nicht verändert.
Siehe auch worldMatrixEnabled(), worldTransform(), und Coordinate Transformations.
void QPainter::setWorldTransform(const QTransform &matrix, bool combine = false)
Setzt die Welttransformationsmatrix. Wenn combine wahr ist, wird die angegebene matrix mit der aktuellen Matrix kombiniert; andernfalls ersetzt sie die aktuelle Matrix.
Siehe auch worldTransform(), transform(), und setTransform().
void QPainter::shear(qreal sh, qreal sv)
Schert das Koordinatensystem um (sh, sv).
Siehe auch setWorldTransform() und Coordinate Transformations.
void QPainter::strokePath(const QPainterPath &path, const QPen &pen)
Zeichnet die Kontur (Striche) des Pfades path mit dem Stift, der durch pen
Siehe auch fillPath() und Drawing.
bool QPainter::testRenderHint(QPainter::RenderHint hint) const
Gibt true
zurück, wenn hint gesetzt ist; andernfalls gibt es false
zurück.
Siehe auch renderHints() und setRenderHint().
const QTransform &QPainter::transform() const
Alias für worldTransform(). Gibt die Welttransformationsmatrix zurück.
Siehe auch setTransform() und worldTransform().
void QPainter::translate(const QPointF &offset)
Verschiebt das Koordinatensystem um die angegebene offset; d.h. die angegebene offset wird zu Punkten hinzugefügt.
Siehe auch setWorldTransform() und Coordinate Transformations.
void QPainter::translate(const QPoint &offset)
Dies ist eine überladene Funktion.
Verschiebt das Koordinatensystem um die angegebene offset.
void QPainter::translate(qreal dx, qreal dy)
Dies ist eine überladene Funktion.
Verschiebt das Koordinatensystem um den Vektor (dx, dy).
bool QPainter::viewTransformEnabled() const
Gibt true
zurück, wenn die Ansichtstransformation aktiviert ist; andernfalls wird false zurückgegeben.
Siehe auch setViewTransformEnabled() und worldTransform().
QRect QPainter::viewport() const
Gibt das Ansichtsfenster-Rechteck zurück.
Siehe auch setViewport() und setViewTransformEnabled().
QRect QPainter::window() const
Gibt das Fensterrechteck zurück.
Siehe auch setWindow() und setViewTransformEnabled().
bool QPainter::worldMatrixEnabled() const
Gibt true
zurück, wenn die Welttransformation aktiviert ist; andernfalls wird false zurückgegeben.
Siehe auch setWorldMatrixEnabled(), worldTransform(), und Koordinatensystem.
const QTransform &QPainter::worldTransform() const
Gibt die Welttransformationsmatrix zurück.
Siehe auch setWorldTransform().
© 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.