Auf dieser Seite

QPainter Class

Die Klasse „QPainter“ führt Low-Level-Zeichnungsvorgänge an Widgets und anderen Zeichenobjekten durch. Mehr...

Header: #include <QPainter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Vererbt an:

QStylePainter

Hinweis: Alle Funktionen 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*device)
~QPainter()
const QBrush &background() const
Qt::BGMode backgroundMode() const
bool begin(QPaintDevice*device)
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
(since 6.11) QPointF brushOriginF() const
QRectF clipBoundingRect() const
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 Breite, int Höhe, int Startwinkel, int Spannwinkel)
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 Breite, int Höhe, int Startwinkel, int Spannwinkel)
void drawConvexPolygon(const QPointF*points, int pointCount)
void drawConvexPolygon(const QPolygon&polygon)
void drawConvexPolygon(const QPolygonF&polygon)
void drawConvexPolygon(const QPoint*points, int pointCount)
void drawEllipse(const QRectF&rectangle)
void drawEllipse(const QRect&rectangle)
void drawEllipse(const QPoint&center, int rx, int ry)
void drawEllipse(const QPointF&center, 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(const QPoint&point, const QImage&image)
void drawImage(const QPointF&point, const QImage&image)
void drawImage(const QRect&rectangle, const QImage&image)
void drawImage(const QRectF&rectangle, const QImage&image)
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>&pointPairs)
void drawLines(const QLine*lines, int lineCount)
void drawLines(const QPoint*pointPairs, int lineCount)
void drawLines(const QPointF*pointPairs, int lineCount)
void drawPath(const QPainterPath&path)
void drawPicture(const QPointF&point, const QPicture&picture)
void drawPicture(const QPoint&point, const QPicture&picture)
void drawPicture(int x, int y, const QPicture&picture)
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 Breite, int Höhe, int Startwinkel, int Spannwinkel)
void drawPixmap(const QRectF&target, const QPixmap&pixmap, const QRectF&source)
void drawPixmap(const QPoint&point, const QPixmap&pixmap)
void drawPixmap(const QPointF&point, const QPixmap&pixmap)
void drawPixmap(const QRect&rectangle, const QPixmap&pixmap)
void drawPixmap(const QPoint&point, const QPixmap&pixmap, const QRect&source)
void drawPixmap(const QPointF&point, const QPixmap&pixmap, const QRectF&source)
void drawPixmap(const QRect&target, const QPixmap&pixmap, const QRect&source)
void drawPixmap(int x, int y, const 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*points, int pointCount)
void drawPoints(const QPolygon&points)
void drawPoints(const QPolygonF&points)
void drawPoints(const QPoint*points, int pointCount)
void drawPolygon(const QPointF*points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPolygon&points, 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*points, int pointCount)
void drawPolyline(const QPolygon&points)
void drawPolyline(const QPolygonF&points)
void drawPolyline(const QPoint*points, 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*rectangles, 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 left, int top, const QStaticText&staticText)
void drawText(const QPointF&position, const QString&text)
void drawText(const QPoint&position, const QString&text)
void drawText(const QRectF&rectangle, const QString&text, const QTextOption&option = QTextOption())
void drawText(int x, int y, const 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(const QPainterPath&path, const 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::Preset 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 Breite, int Höhe, Qt::BrushStyle Stil)
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&Pinsel)
void fillRect(int x, int y, int Breite, int Höhe, const QColor&Farbe)
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&brush)
void setBackgroundMode(Qt::BGMode mode)
void setBrush(const QBrush&brush)
(since 6.11) void setBrush(QBrush&&brush)
(since 6.9) void setBrush(QColor color)
void setBrush(Qt::BrushStyle style)
(since 6.9) void setBrush(Qt::GlobalColor Farbe)
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&region, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipping(bool enable)
void setCompositionMode(QPainter::CompositionMode mode)
void setFont(const QFont&font)
void setLayoutDirection(Qt::LayoutDirection Richtung)
void setOpacity(qreal opacity)
void setPen(const QPen&pen)
(since 6.11) void setPen(QPen&&pen)
void setPen(Qt::PenStyle style)
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

Ausführliche Beschreibung

QPainter bietet hochoptimierte Funktionen für die meisten Zeichenvorgänge, die in GUI-Programmen benötigt werden. Es kann alles zeichnen, von einfachen Linien bis hin zu komplexen Formen wie Kreisen und Sehnen. Außerdem kann es ausgerichteten Text und Pixmaps zeichnen. Normalerweise zeichnet es in einem „natürlichen“ Koordinatensystem, kann aber auch Ansichts- und Welttransformationen durchführen. QPainter kann auf jedes Objekt angewendet werden, das die Klasse „ QPaintDevice “ erbt.

QPainter wird üblicherweise im „paint“-Ereignis eines Widgets verwendet: Erstellen und passen Sie den Painter an (z. B. durch Festlegen des Stifts oder Pinsels). Zeichnen Sie anschließend. Denken Sie daran, das QPainter-Objekt nach dem Zeichnen zu löschen. 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, doch die Klasse bietet auch mehrere Funktionen, mit denen Sie die Einstellungen und die Darstellungsqualität von QPainter anpassen können, sowie weitere Funktionen, die das Clipping ermöglichen. Darüber hinaus können Sie durch die Angabe des Kompositionsmodus des Painters steuern, wie verschiedene Formen miteinander verschmolzen werden.

Die Funktion ` isActive()` gibt an, ob der Painter aktiv ist. Ein Painter wird durch die Funktion ` begin()` und den Konstruktor, der ein ` QPaintDevice `-Argument entgegennimmt, aktiviert. Die Funktion ` end()` sowie der Destruktor deaktivieren ihn.

Zusammen mit den Klassen ` QPaintDevice ` und ` QPaintEngine ` bildet `QPainter` die Grundlage für das Zeichensystem von Qt. `QPainter` ist die Klasse, die zur Durchführung von Zeichenoperationen verwendet wird. ` QPaintDevice ` repräsentiert ein Gerät, auf das mit einem `QPainter` gezeichnet werden kann. ` QPaintEngine ` stellt die Schnittstelle bereit, über die der Painter auf verschiedene Arten von Geräten zeichnet. Ist der Painter aktiv, gibt device() das Zeichen-Gerät zurück, auf dem der Painter zeichnet, und paintEngine() gibt die Zeichen-Engine zurück, auf der der Painter gerade arbeitet. Weitere Informationen finden Sie im Abschnitt „Zeichensystem“.

Manchmal ist es wünschenswert, dass jemand anderes auf einem ungewöhnlichen „ QPaintDevice “ malt. QPainter unterstützt hierfür eine statische Funktion: setRedirected().

Warnung: Wenn das „paintdevice“ ein Widget ist, kann QPainter nur innerhalb einer `paintEvent()`-Funktion oder in einer von `paintEvent()` aufgerufenen Funktion verwendet werden.

Einstellungen

Es gibt verschiedene Einstellungen, die Sie anpassen können, damit QPainter nach Ihren Wünschen zeichnet:

  • font() ist die Schriftart, die zum Zeichnen von Text verwendet wird. Wenn der Painter- isActive(), können Sie Informationen über die aktuell eingestellte Schriftart und deren Metriken mithilfe der Funktionen „ fontInfo “ () bzw. „ fontMetrics “ () abrufen.
  • brush() definiert die Farbe oder das Muster, die bzw. das zum Ausfüllen von Formen verwendet wird.
  • pen() definiert die Farbe oder das Punktmuster, das zum Zeichnen von Linien oder Begrenzungen verwendet wird.
  • backgroundMode() legt fest, ob ein „ background “ () vorhanden ist oder nicht, d. h., es ist entweder „ Qt::OpaqueMode “ oder „ Qt::TransparentMode “.
  • background() gilt nur, wenn „ backgroundMode “ () auf „ Qt::OpaqueMode “ gesetzt ist und „ pen “ () ein Punktmuster ist. In diesem Fall beschreibt es die Farbe der Hintergrundpixel im Punktmuster.
  • brushOrigin() definiert den Ursprung der gekachelten Pinsel, normalerweise den Ursprung des Widget-Hintergrunds.
  • viewport(), ` window()`, ` worldTransform()` bilden das Koordinatentransformationssystem des Painters. Weitere Informationen finden Sie im Abschnitt „ Coordinate Transformations “ und in der Dokumentation zum Koordinatensystem.
  • hasClipping() gibt an, ob der Painter überhaupt einen Ausschnitt vornimmt. (Das Malgerät nimmt ebenfalls einen Ausschnitt vor.) Wenn der Painter einen Ausschnitt vornimmt, erfolgt dieser gemäß clipRegion().
  • layoutDirection() definiert die vom Painter beim Zeichnen von Text verwendete Layout-Richtung.
  • 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 bestimmten Malgeräten widerspiegeln, z. B. QWidget::font(). Die Funktion QPainter::begin() (oder entsprechend der QPainter-Konstruktor) kopiert diese Attribute aus dem Malgerät.

Sie können den Zustand des QPainter jederzeit speichern, indem Sie die Funktion ` save()` aufrufen, die alle verfügbaren Einstellungen auf einem internen Stack speichert. Die Funktion ` restore()` ruft diese wieder ab.

Zeichnen

QPainter stellt Funktionen zum Zeichnen der meisten Primitive bereit: ` drawPoint()`, ` drawPoints()`, ` drawLine()`, ` drawRect()`, ` drawRoundedRect()`, ` drawEllipse()`, ` drawArc()`, ` drawPie()`, ` drawChord()`, ` drawPolyline()`, ` drawPolygon()`, ` drawConvexPolygon()` und `drawCubicBezier()`. Die beiden Hilfsfunktionen „ drawRects()“ und „ drawLines()“ zeichnen die angegebene Anzahl von Rechtecken oder Linien aus dem angegebenen Array von „ QRects “ oder „ QLines “ mit dem aktuellen Stift und Pinsel.

Die Klasse `QPainter` stellt außerdem die Funktion ` fillRect()` zur Verfügung, die das angegebene ` QRect` mit der angegebenen ` QBrush` füllt, sowie die Funktion ` eraseRect()`, die den Bereich innerhalb des angegebenen Rechtecks löscht.

Alle diese Funktionen verfügen sowohl über Integer- als auch über Gleitkomma-Versionen.

Einfache Zeichenanwendung mit Form- und StiftoptionenBeispiel für grundlegende Zeichnungen

Das Beispiel „Grundlegendes Zeichnen“ zeigt, wie man mit der Klasse `QPainter` grundlegende Grafikprimitive in verschiedenen Stilen darstellen kann.

Wenn Sie eine komplexe Form zeichnen müssen, insbesondere wenn dies wiederholt erfolgen soll, sollten Sie in Erwägung ziehen, eine „ QPainterPath “ zu erstellen und diese mit „ drawPath()“ zu zeichnen.

Beispiel „Painter-Pfade“

Die Klasse „ QPainterPath “ bietet einen Container für Zeichenvorgänge, wodurch grafische Formen erstellt und wiederverwendet werden können.

Das Beispiel „Painter Paths “ zeigt, wie Painter-Pfade zum Erstellen komplexer Formen für die Darstellung verwendet werden können.

Die Anwendung „Painter Paths“ mit verschiedenen Formen

QPainter stellt außerdem die Funktion ` fillPath()` bereit, die den angegebenen Pfad ` QPainterPath ` mit der angegebenen Füllfarbe ` QBrush` füllt, sowie die Funktion ` strokePath()`, die den Umriss des angegebenen Pfades zeichnet (d. h. den Pfad umrandet).

Siehe auch das Beispiel „Vektorverformung“, das zeigt, wie man mit fortgeschrittenen Vektortechniken Text mithilfe eines „ QPainterPath “ zeichnet, das Beispiel „Farbverläufe“, das die verschiedenen in Qt verfügbaren Farbverlaufstypen veranschaulicht, sowie das Beispiel „Pfad konturieren“, das die in Qt integrierten Strichmuster vorstellt und zeigt, wie benutzerdefinierte Muster verwendet werden können, um die Auswahl an verfügbaren Mustern zu erweitern.

Das Zeichnen von Text erfolgt mithilfe von ` drawText()`. Wenn Sie eine fein abgestimmte Positionierung benötigen, gibt Ihnen ` boundingRect()` Auskunft darüber, 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() liefern das gleiche Ergebnis, mit dem Unterschied, dass drawPixmap() auf dem Bildschirm schneller ist, während drawImage() auf einem QPrinter oder anderen Geräten möglicherweise schneller ist.

Es gibt eine Funktion „ drawPicture()“, die den Inhalt eines gesamten „ QPicture “ zeichnet. Die Funktion „ drawPicture()“ ist die einzige Funktion, die alle Einstellungen des „Painter“ ignoriert, da „ QPicture “ über eigene Einstellungen verfügt.

Zeichnen von hochauflösenden Versionen von Pixmaps und Bildern

Hochauflösende Versionen von Pixmaps haben einen Wert für das Gerätepixelverhältnis, der größer als 1 ist (siehe QImageReader, QPixmap::devicePixelRatio()). Sollte dieser Wert mit dem Wert des zugrunde liegenden QPaintDevice übereinstimmen, wird die Pixmap ohne zusätzliche Transformation direkt auf das Gerät gezeichnet.

Dies ist beispielsweise der Fall, wenn ein „ QPixmap “ mit einer Größe von 64x64 Pixeln und einem Gerätepixelverhältnis von 2 auf einen Bildschirm mit hoher DPI-Auflösung gezeichnet wird, der ebenfalls ein Gerätepixelverhältnis von 2 aufweist. Beachten Sie, dass die Pixmap im Benutzerraum dann effektiv 32x32 Pixel groß ist. Codepfade in Qt, die die Layout-Geometrie auf Basis der Pixmap-Größe berechnen, verwenden diese Größe. Dies hat letztlich zur Folge, dass die Pixmap als Pixmap mit hoher DPI-Auflösung und nicht als große Pixmap angezeigt wird.

Rendering-Qualität

Um mit QPainter ein optimales Rendering-Ergebnis zu erzielen, sollten Sie die plattformunabhängige „ QImage “ als Zeichenvorrichtung verwenden; d. h. die Verwendung von „ QImage “ stellt sicher, dass das Ergebnis auf jeder Plattform eine identische Pixeldarstellung aufweist.

Die QPainter-Klasse bietet zudem die Möglichkeit, die Darstellungsqualität über die Enumeration „ RenderHint “ und die Unterstützung von Gleitkommagenauigkeit zu steuern: Alle Funktionen zum Zeichnen von Primitiven verfügen über Gleitkomma-Versionen.

painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter));

Diese werden häufig in Kombination mit dem Render-Hinweis „ QPainter::Antialiasing “ verwendet.

QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
Vergleich konzentrischer Kreise mit „int“ und „float“ sowie mit und ohne Anti-Aliasing. Bei Verwendung der Versionen mit Gleitkommagenauigkeit entstehen gleichmäßig beabstandete Ringe. Anti-Aliasing führt zu glatten Kreisen.Konzentrische Kreise zum Vergleich von Aliasing und Anti-Aliasing

Die Enumeration „ RenderHint “ legt Flags für „QPainter“ fest, die von einer bestimmten Engine berücksichtigt werden können oder auch nicht. „ QPainter::Antialiasing “ gibt an, dass die Engine Kanten von Primitiven nach Möglichkeit glätten soll, „ QPainter::TextAntialiasing “ gibt an, dass die Engine Text nach Möglichkeit glätten soll, und „ QPainter::SmoothPixmapTransform “ gibt an, dass die Engine einen Algorithmus zur glatten Pixmap-Transformation verwenden soll.

Die Funktion ` renderHints()` gibt ein Flag zurück, das die für diesen Painter festgelegten Rendering-Hinweise angibt. Verwenden Sie die Funktion ` setRenderHint()`, um die aktuell festgelegten ` RenderHints` zu setzen oder zu löschen.

Koordinatentransformationen

Normalerweise arbeitet der QPainter im geräteeigenen Koordinatensystem (in der Regel Pixel), aber QPainter bietet eine gute Unterstützung für Koordinatentransformationen.

Die am häufigsten verwendeten Transformationen sind Skalierung, Drehung, Verschiebung und Scherung. Verwenden Sie die Funktion „ scale “ (), um das Koordinatensystem um einen bestimmten Versatz zu skalieren, die Funktion „ rotate “ (), um es im Uhrzeigersinn zu drehen, und „ translate “ (), um es zu verschieben (d. h. den Punkten einen bestimmten Versatz hinzuzufügen). Sie können das Koordinatensystem außerdem mit der Funktion „ shear “ () um den Ursprung verdrehen. Eine Visualisierung eines verschobenen Koordinatensystems finden Sie im Beispiel „Affine Transformationen “.

Siehe auch das Beispiel „Transformationen“, das zeigt, wie Transformationen die Art und Weise beeinflussen, wie QPainter Grafikprimitive rendert. Insbesondere wird dort gezeigt, wie sich die Reihenfolge der Transformationen auf das Ergebnis auswirkt.

Beispiel „Affine Transformationen“

Das Beispiel „Affine Transformationen“ veranschaulicht die Fähigkeit von Qt, affine Transformationen bei Zeichenvorgängen durchzuführen. Die Demo ermöglicht es dem Benutzer zudem, mit den Transformationsoperationen zu experimentieren und die Ergebnisse sofort zu sehen.

Beispiel für affine Transformationen anhand einer Pinguin-Grafik

Alle Transformationsoperationen werden auf der Transformations worldTransform() angewendet. Eine Matrix transformiert einen Punkt in der Ebene in einen anderen Punkt. Weitere Informationen zur Transformationsmatrix finden Sie in der Dokumentation zu „Koordinatensystem“ und „ QTransform “.

Die Funktion ` setWorldTransform()` kann die aktuell festgelegte ` 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ätekordinaten des plattformabhängigen Zeichen-Geräts transformiert. Letztere Funktion wird nur benötigt, wenn plattformabhängige Zeichenbefehle auf dem plattformabhängigen Handle verwendet werden und die Plattform keine Transformationen nativ durchführt.

Beim Zeichnen mit QPainter geben wir Punkte anhand logischer Koordinaten an, die dann in die physikalischen Koordinaten des Zeichen-Geräts umgewandelt werden. Die Zuordnung der logischen Koordinaten zu den physikalischen Koordinaten wird von der Funktion ` combinedTransform()` von QPainter übernommen, einer Kombination aus ` viewport()`, ` window()` und ` worldTransform()`. Die Funktion ` viewport()` stellt die physikalischen Koordinaten dar, die ein beliebiges Rechteck spezifizieren, die Funktion ` window()` beschreibt dasselbe Rechteck in logischen Koordinaten, und die Funktion ` worldTransform()` ist identisch mit der Transformationsmatrix.

Siehe auch Koordinatensystem

Clipping

QPainter kann jeden Zeichenvorgang auf ein Rechteck, einen Bereich oder einen Vektorpfad beschneiden. Der aktuelle Ausschnitt ist über die Funktionen „ clipRegion()“ und „ clipPath()“ verfügbar. Ob Pfade oder Bereiche bevorzugt (schneller) sind, hängt von der zugrunde liegenden „ paintEngine()“ ab. Beispielsweise bevorzugt die „ QImage “-Zeichen-Engine Pfade, während die X11-Zeichen-Engine Bereiche bevorzugt. Die Festlegung eines Ausschnitts erfolgt in den logischen Koordinaten des Painters.

Nach dem Clipping durch den QPainter kann auch das Zeichengerät ein Clipping vornehmen. Beispielsweise schneiden die meisten Widgets die von untergeordneten Widgets verwendeten Pixel ab, und die meisten Drucker schneiden einen Bereich nahe den Papierrändern ab. Dieses zusätzliche Clipping wird durch den Rückgabewert von ` clipRegion()` oder ` hasClipping()` nicht berücksichtigt.

Kompositionsmodi

QPainter stellt die Enumeration ` CompositionMode ` zur Verfügung, die die Porter-Duff-Regeln für die digitale Bildkomposition definiert; sie beschreibt ein Modell zur Kombination der Pixel eines Bildes (der Quelle) mit den Pixeln eines anderen Bildes (des Ziels).

Die beiden gängigsten Formen der Bildzusammenstellung sind „ Source “ und „ SourceOver “. „ Source “ wird verwendet, um undurchsichtige Objekte auf ein Zeichenobjekt zu zeichnen. In diesem Modus ersetzt jedes Pixel der Quelle das entsprechende Pixel des Ziels. Im Kompositionsmodus „ SourceOver “ ist das Quellobjekt transparent und wird über das Zielobjekt gezeichnet.

Beachten Sie, dass die Kompositionstransformation pixelweise erfolgt. Aus diesem Grund besteht ein Unterschied zwischen der Verwendung der Grafikprimitive selbst und ihres Begrenzungsrechtecks: Das Begrenzungsrechteck enthält Pixel mit alpha == 0 (d. h. die die Primitive umgebenden Pixel). Diese Pixel überschreiben die Pixel des anderen Bildes und löschen diese damit effektiv, während die Primitive nur ihren eigenen Bereich überschreibt.

Beispiel für Kompositionsmodi mit überblendeten BildernBeispiel für Kompositionsmodi

Das Beispiel „Composition Modes“, das im Beispielverzeichnis 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 der rasterbasierten Zeichen-Engine von Qt verwenden, sollten Sie beachten, dass zwar Koordinaten größer als +/-215 verwendet werden können, die Darstellung von Zeichnungen mit Koordinaten außerhalb dieses Bereichs jedoch nicht garantiert ist; die Zeichnung kann abgeschnitten werden. Dies ist auf die Verwendung von „ short int “ in der Implementierung zurückzuführen.

Die vom Qt-Stroker erzeugten Konturen stellen bei gekrümmten Formen lediglich eine Annäherung dar. In den meisten Fällen ist es unmöglich, die Kontur eines Bézier-Kurvensegments mithilfe eines anderen Bézier-Kurvensegments darzustellen; daher approximiert Qt die Kurvenkonturen durch die Verwendung mehrerer kleinerer Kurven. Aus Leistungsgründen ist die Anzahl der Kurven, die Qt für diese Konturen verwendet, begrenzt; daher nimmt der Konturfehler bei großen Stiftbreiten oder Vergrößerungen zu. Um Konturen mit geringeren Fehlern zu erzeugen, kann die Klasse ` QPainterPathStroker ` verwendet werden, die über die Memberfunktion `setCurveThreshold` verfügt, mit der der Benutzer die Fehlertoleranz festlegen kann. Eine weitere Abhilfe besteht darin, die Pfade zunächst in Polygone umzuwandeln und anschließend die Polygone zu zeichnen.

Ebenso approximiert Qt Bögen und Ellipsen mit kubischen Bézier-Kurven, anstatt sie trigonometrisch zu berechnen, sodass Punkte auf einem Bogen leicht von ihren tatsächlichen Positionen abweichen. In diesem Zusammenhang sind die Winkel, die „ drawArc()“, „ drawPie()“ und „ drawChord()“ verwenden, exzentrische Winkel: Sie messen die Richtung vom Mittelpunkt des Begrenzungsrechtecks aus nur dann, wenn dieses Rechteck quadratisch ist. Siehe Arcs and Ellipses für Details zu beiden Punkten.

Leistung

QPainter ist ein umfangreiches Framework, das Entwicklern eine Vielzahl grafischer Operationen ermöglicht, wie z. B. Farbverläufe, Kompositionsmodi und Vektorgrafiken. Und QPainter kann dies über eine Vielzahl unterschiedlicher Hardware- und Software-Stacks hinweg. Natürlich hat die zugrunde liegende Kombination aus Hardware und Software Auswirkungen auf die Leistung, und sicherzustellen, dass jede einzelne Operation in Kombination mit all den verschiedenen Kombinationen aus Kompositionsmodi, Pinseln, Clipping, Transformationen usw. schnell ist, grenzt aufgrund der Vielzahl an Permutationen an eine unmögliche Aufgabe. Als Kompromiss haben wir eine Teilmenge der QPainter-API und der Backends ausgewählt, bei der die Leistung so gut ist, wie wir sie für die jeweilige Kombination aus Hardware und Software vernünftigerweise erreichen können.

Die Backends, auf die wir uns als Hochleistungs-Engines konzentrieren, sind:

  • Raster – Dieses Backend implementiert das gesamte Rendering rein softwaremäßig und wird immer zum Rendern in QImages verwendet. Für optimale Leistung sollten nur die Formattypen QImage::Format_ARGB32_Premultiplied, QImage::Format_RGB32 oder QImage::Format_RGB16 verwendet werden. Alle anderen Formate, einschließlich QImage::Format_ARGB32, weisen eine deutlich schlechtere Leistung auf. 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 Grafik. Es kann auf Desktop-Computern 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 Jahren hergestellt wurden. Die Engine kann aktiviert werden, indem QPainter auf ein „ QOpenGLWidget “ angewendet wird.

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 im nicht-glatten Transformationsmodus (QPainter::SmoothPixmapTransform ist nicht als Render-Hinweis aktiviert).
  • Rechteckfüllungen mit Volltonfarben, zweifarbigen linearen Farbverläufen und einfachen Transformationen.
  • Rechteckiges Clipping mit einfachen Transformationen und Schnitt-Clip.
  • Kompositionsmodi „ QPainter::CompositionMode_Source “ und „ QPainter::CompositionMode_SourceOver “.
  • Abgerundete Rechtecke, gefüllt mit Volltonfarben und zweifarbigen linearen Farbverläufen.
  • 3x3-Patch-Pixmaps über „ qDrawBorderPixmap “.

Diese Liste gibt einen Anhaltspunkt dafür, 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, doch bevor man sie in großem Umfang einsetzt, empfiehlt es sich, sie auf dem System, auf dem die Software letztendlich laufen wird, zu benchmarken und zu überprüfen. Es gibt auch Fälle, in denen rechenintensive Operationen zulässig sind, beispielsweise wenn das Ergebnis in einem QPixmap zwischengespeichert wird.

Siehe auch „ QPaintDevice “, „ QPaintEngine “, Qt SVG, „Einfaches Zeichenbeispiel“ und „ Drawing Utility Functions “.

Dokumentation zu Mitgliedstypen

enum QPainter::CompositionMode

Definiert die unterstützten Modi für die digitale Bildkomposition. Kompositionsmodi dienen dazu, festzulegen, wie die Pixel eines Bildes (der Quelle) mit den Pixeln eines anderen Bildes (des Ziels) zusammengeführt werden.

Bitte beachten Sie, dass die bitweisen Rasteroperationsmodi, die mit dem Präfix „RasterOp“ gekennzeichnet sind, nur in den X11- und Raster-Paint-Engines nativ unterstützt werden. Das bedeutet, dass diese Modi auf dem Mac nur über eine „ QImage “ genutzt werden können. Die mit „RasterOp“ gekennzeichneten Mischmodi werden für Stifte und Pinsel mit Alpha-Komponenten nicht unterstützt. Außerdem werden die RasterOp-Modi durch das Aktivieren des Render-Hinweises „ QPainter::Antialiasing “ effektiv deaktiviert.

Abbildung zur Veranschaulichung der Kompositionsmodi „Source“, „Destination“, „SourceOver“, „DestinationOver“, „SourceIn“ und „DestinationIn“

Abbildung, die die Kompositionsmodi „SourceOut“, „DestinationOut“, „SourceAtop“, „DestinationAtop“, „Clear“ und „Xor“ zeigt

Der gängigste Modus ist „SourceOver“ (oft einfach als „Alpha-Blending“ bezeichnet), bei dem das Quellpixel so über das Zielpixel gelegt wird, dass die Alpha-Komponente der Quelle die Transparenz des Pixels bestimmt.

Mehrere Kompositionsmodi erfordern einen Alphakanal im Quell- oder Zielbild, um eine Wirkung zu erzielen. Für optimale Leistung wird das Bildformat „ Format_ARGB32_Premultiplied “ bevorzugt.

Wenn ein Kompositionsmodus festgelegt ist, gilt dieser für alle Maloperatoren, Stifte, Pinsel, Farbverläufe und das Zeichnen mit Pixmaps/Bildern.

KonstanteWertBeschreibung
QPainter::CompositionMode_SourceOver0Dies ist der Standardmodus. Der Alpha-Wert der Quelle wird verwendet, um das Pixel mit dem Zielbild zu überblenden.
QPainter::CompositionMode_DestinationOver1Der Alpha-Wert des Ziels wird verwendet, um es über die Pixel der Quelle zu mischen. Dieser Modus ist das Gegenteil von „CompositionMode_SourceOver“.
QPainter::CompositionMode_Clear2Die Pixel im Zielbild werden unabhängig von der Quelle gelöscht (auf vollständige Transparenz gesetzt).
QPainter::CompositionMode_Source3Die Ausgabe ist das Quellpixel. (Dies entspricht einem einfachen Kopiervorgang und ist identisch mit „SourceOver“, wenn das Quellpixel undurchsichtig ist.)
QPainter::CompositionMode_Destination4Das Ergebnis ist das Zielpixel. Das bedeutet, dass die Überblendung keine Auswirkung hat. Dieser Modus ist das Gegenteil von „CompositionMode_Source“.
QPainter::CompositionMode_SourceIn5Die Ausgabe ist das Quellpixel, wobei der Alpha-Wert um den des Zielpixels reduziert wird.
QPainter::CompositionMode_DestinationIn6Das Ergebnis ist das Zielpixel, wobei der Alpha-Wert um den des Quellpixels reduziert wird. Dieser Modus ist das Gegenteil von „CompositionMode_SourceIn“.
QPainter::CompositionMode_SourceOut7Die Ausgabe ist die Quelle, wobei der Alpha-Wert um den Kehrwert des Ziels reduziert wird.
QPainter::CompositionMode_DestinationOut8Das Ergebnis ist das Zielpixel, wobei der Alpha-Wert um den Kehrwert des Quellpixels reduziert wird. Dieser Modus ist das Gegenteil von „CompositionMode_SourceOut“.
QPainter::CompositionMode_SourceAtop9Das Quellpixel wird über das Zielpixel gelegt, wobei der Alpha-Wert des Quellpixels um den Alpha-Wert des Zielpixels reduziert wird.
QPainter::CompositionMode_DestinationAtop10Das Zielpixel wird über die Quelle gelegt, wobei der Alpha-Wert des Zielpixels um den Alpha-Wert des Zielpixels reduziert wird. Dieser Modus ist das Gegenteil von „CompositionMode_SourceAtop“.
QPainter::CompositionMode_Xor11Die Quelle, deren Alpha-Wert um den Kehrwert des Ziel-Alpha-Werts reduziert wird, wird mit dem Ziel verschmolzen, dessen Alpha-Wert um den Kehrwert des Quell-Alpha-Werts reduziert wird. CompositionMode_Xor ist nicht dasselbe wie die bitweise XOR-Operation.
QPainter::CompositionMode_Plus12Sowohl der Alpha-Wert als auch die Farbe der Quell- und Zielpixel werden addiert.
QPainter::CompositionMode_Multiply13Das Ergebnis 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_Screen14Die Quell- und Zielfarben werden invertiert und anschließend multipliziert. Das Rastern einer Farbe mit Weiß ergibt Weiß, während das Rastern einer Farbe mit Schwarz die Farbe unverändert lässt.
QPainter::CompositionMode_Overlay15Multipliziert oder rastert die Farben je nach Zielfarbe. Die Zielfarbe wird mit der Quellfarbe gemischt, um die Helligkeit oder Dunkelheit der Zielfarbe widerzuspiegeln.
QPainter::CompositionMode_Darken16Die dunklere der Ausgangs- und Zielfarben wird ausgewählt.
QPainter::CompositionMode_Lighten17Die hellere der Ausgangs- und Zielfarben wird ausgewählt.
QPainter::CompositionMode_ColorDodge18Die Zielfarbe wird aufgehellt, um die Quellfarbe widerzuspiegeln. Eine schwarze Quellfarbe lässt die Zielfarbe unverändert.
QPainter::CompositionMode_ColorBurn19Die Zielfarbe wird abgedunkelt, um die Quellfarbe widerzuspiegeln. Eine weiße Quellfarbe lässt die Zielfarbe unverändert.
QPainter::CompositionMode_HardLight20Multipliziert oder rastert die Farben je nach Quellfarbe. Eine helle Quellfarbe hellt die Zielfarbe auf, während eine dunkle Quellfarbe die Zielfarbe abdunkelt.
QPainter::CompositionMode_SoftLight21Verdunkelt oder hellt die Farben je nach Quellfarbe auf. Ähnlich wie bei „CompositionMode_HardLight“.
QPainter::CompositionMode_Difference22Zieht die dunklere der beiden Farben von der helleren ab. Beim Malen mit Weiß wird die Zielfarbe invertiert, während das Malen mit Schwarz die Zielfarbe unverändert lässt.
QPainter::CompositionMode_Exclusion23Ähnlich wie „CompositionMode_Difference“, jedoch mit geringerem Kontrast. Das Malen mit Weiß kehrt die Zielfarbe um, während das Malen mit Schwarz die Zielfarbe unverändert lässt.
QPainter::RasterOp_SourceOrDestination24Führt eine bitweise ODER-Operation auf die Quell- und Zielpixel durch (src OR dst).
QPainter::RasterOp_SourceAndDestination25Führt eine bitweise UND-Operation zwischen den Quell- und Zielpixeln durch (src AND dst).
QPainter::RasterOp_SourceXorDestination26Führt eine bitweise XOR-Operation auf die Quell- und Zielpixel durch (src XOR dst).
QPainter::RasterOp_NotSourceAndNotDestination27Führt eine bitweise NOR-Operation auf den Quell- und Zielpixeln durch ((NOT src) AND (NOT dst)).
QPainter::RasterOp_NotSourceOrNotDestination28Führt eine bitweise NAND-Operation auf den Quell- und Zielpixeln durch ((NOT src) OR (NOT dst)).
QPainter::RasterOp_NotSourceXorDestination29Führt eine bitweise Operation durch, bei der die Quellpixel invertiert und anschließend mit dem Zielpixel XOR-verknüpft werden ((NOT src) XOR dst).
QPainter::RasterOp_NotSource30Führt eine bitweise Operation durch, bei der die Quellpixel invertiert werden (NOT src).
QPainter::RasterOp_NotSourceAndDestination31Führt eine bitweise Operation durch, bei der die Quelle invertiert und anschließend mit dem Ziel verANDet wird ((NOT src) AND dst).
QPainter::RasterOp_SourceAndNotDestination32Führt eine bitweise Operation durch, bei der die Quelle mit den invertierten Zielpixeln mit „AND“ verknüpft wird (src AND (NOT dst)).
QPainter::RasterOp_NotSourceOrDestination33Führt eine bitweise Operation durch, bei der die Quelle invertiert und anschließend mit dem Ziel OR-verknüpft wird ((NOT src) OR dst).
QPainter::RasterOp_ClearDestination35Die Pixel im Ziel werden unabhängig von der Quelle gelöscht (auf 0 gesetzt).
QPainter::RasterOp_SetDestination36Die Pixel im Ziel werden unabhängig von der Quelle gesetzt (auf 1 gesetzt).
QPainter::RasterOp_NotDestination37Führt eine bitweise Operation durch, bei der die Zielpixel invertiert werden (NOT dst).
QPainter::RasterOp_SourceOrNotDestination34Führt eine bitweise Operation durch, bei der die Quelle mit den invertierten Zielpixeln „ODER“-verknüpft wird (src OR (NOT dst)).

Siehe auch „ compositionMode()“, „ setCompositionMode()“, „ Composition Modes “ und „Beispiel zur Bildkomposition“.

enum QPainter::PixmapFragmentHint
flags QPainter::PixmapFragmentHints

KonstanteWertBeschreibung
QPainter::OpaqueHint0x01Gibt an, dass die zu zeichnenden Pixmap-Fragmente undurchsichtig sind. Undurchsichtige Fragmente lassen sich möglicherweise schneller zeichnen.

Der Typ „PixmapFragmentHints“ ist eine Typdefinition für „QFlags<PixmapFragmentHint>“. Er speichert eine ODER-Kombination von „PixmapFragmentHint“-Werten.

Siehe auch „ QPainter::drawPixmapFragments()“ und „ QPainter::PixmapFragment “.

enum QPainter::RenderHint
flags QPainter::RenderHints

Renderhints dienen dazu, Flags für „ QPainter “ anzugeben, die von einer bestimmten Engine berücksichtigt werden können oder auch nicht.

KonstanteWertBeschreibung
QPainter::Antialiasing0x01Gibt an, dass die Engine Kanten von Primitiven nach Möglichkeit glätten soll.
QPainter::TextAntialiasing0x02Gibt an, dass die Engine Text nach Möglichkeit mit Antialiasing versehen soll. Um das Antialiasing für Text zwangsweise zu deaktivieren, verwenden Sie diesen Hinweis nicht. Setzen Sie stattdessen „ QFont::NoAntialias “ in der Stilstrategie Ihrer Schriftart.
QPainter::SmoothPixmapTransform0x04Gibt an, dass die Engine einen Algorithmus zur glatten Pixmap-Transformation (z. B. bilinear) anstelle der „Nearest-Neighbor“-Methode verwenden soll.
QPainter::VerticalSubpixelPositioning0x08Erlaubt die Positionierung von Text sowohl vertikal als auch horizontal in Pixelbruchteilen, sofern dies von der Schriftart-Engine unterstützt wird. Dies wird derzeit von Freetype auf allen Plattformen unterstützt, wenn die Hinting-Einstellung auf „ QFont::PreferNoHinting “ gesetzt ist, sowie unter macOS. In den meisten Anwendungsfällen führt dies zu keiner Verbesserung der visuellen Qualität, kann jedoch den Speicherverbrauch erhöhen und die Leistung bei der Textdarstellung etwas beeinträchtigen. Daher wird die Aktivierung dieser Option nicht empfohlen, es sei denn, der Anwendungsfall erfordert dies. Ein solcher Anwendungsfall könnte das Ausrichten von Glyphen an anderen visuellen Primitiven sein. Dieser Wert wurde in Qt 6.1 hinzugefügt.
QPainter::LosslessImageRendering0x40Verwenden Sie nach Möglichkeit eine verlustfreie Bilddarstellung. Derzeit wird dieser Hinweis nur verwendet, wenn „ QPainter “ eingesetzt wird, um eine PDF-Datei über „ QPrinter “ oder „ QPdfWriter “ auszugeben, wobei die Aufrufe von „ drawImage()/drawPixmap()“ Bilder mit einem verlustfreien Komprimierungsalgorithmus anstelle der verlustbehafteten JPEG-Komprimierung kodieren. Dieser Wert wurde in Qt 5.13 hinzugefügt.
QPainter::NonCosmeticBrushPatterns0x80Beim Malen mit einem Pinsel mit einem der vordefinierten Musterstile wird das Muster zusammen mit dem zu malenden Objekt ebenfalls transformiert. Standardmäßig wird das Muster als kosmetisches Element behandelt, sodass die Musterpixel unabhängig von aktiven Transformationen direkt auf Gerätepixel abgebildet werden. 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 zu den Mitgliedsfunktionen

QPainter::QPainter()

Erstellt einen „Painter“.

Siehe auch begin() und end().

[explicit] QPainter::QPainter(QPaintDevice *device)

Erstellt einen Painter, der sofort mit dem Zeichnen des Paint- device s beginnt.

Dieser Konstruktor eignet sich für kurzlebige Painter, z. B. in einer ` QWidget::paintEvent()`-Funktion, und sollte nur einmal verwendet werden. Der Konstruktor ruft für Sie ` begin()` auf, und der Destruktor von `QPainter` 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 unter Verwendung dieses Konstruktors:

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 zeichnen.

Siehe auch begin() und end().

[noexcept] QPainter::~QPainter()

Vernichtet 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 Zeichnen des Farb device s und gibt bei Erfolg true zurück; andernfalls wird false zurückgegeben.

Beachten Sie, dass alle Einstellungen des Painters (setPen(), setBrush() usw.) beim Aufruf von begin() auf die Standardwerte zurückgesetzt werden.

Die Fehler, die auftreten können, sind schwerwiegende Probleme, wie zum Beispiel diese:

painter->begin(nullptr); // impossible - paint device cannot be null

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()` bei der Zerstörung automatisch ausgeführt wird.

Warnung: Ein Zeichenobjekt kann jeweils nur von einem Zeichner gleichzeitig gezeichnet werden.

Warnung: Das Zeichnen auf einem ` QImage ` mit dem Format ` QImage::Format_Indexed8 ` wird nicht unterstützt.

Siehe auch ` end()` und ` QPainter()`.

void QPainter::beginNativePainting()

Leert die Zeichenpipeline und bereitet die Umgebung 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 von der zugrunde liegenden Zeichen-Engine geändert werden, auf ihre jeweiligen Standardzustände zurückgesetzt werden. Welche Zustände zurückgesetzt werden, kann sich von Version zu Version ändern. In der OpenGL-2-Engine werden derzeit die folgenden Zustände zurückgesetzt:

  • Das Blending ist deaktiviert
  • Die Tiefen-, Stencil- und Scherenprüfungen sind deaktiviert
  • die aktive Textur-Einheit wird auf 0 zurückgesetzt
  • Die Tiefenmaske, die Tiefenfunktion und die Clear-Tiefe werden auf ihre Standardwerte zurückgesetzt
  • Die Stencil-Maske, die Stencil-Operation und die Stencil-Funktion werden auf ihre Standardwerte zurückgesetzt
  • Die aktuelle Farbe wird auf reines Weiß zurückgesetzt

Wenn beispielsweise der OpenGL-Polygonmodus vom Benutzer innerhalb eines „beginNativePaint()“- bzw. „endNativePainting()“-Blocks geändert wird, wird er durch „ endNativePainting()“ nicht auf den Standardzustand zurückgesetzt. Hier ist ein Beispiel, das die Vermischung von Painter-Befehlen und reinen OpenGL-Befehlen veranschaulicht:

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 Begrenzungsrechteck des „ text “ zurück, wie es erscheinen wird, wenn es innerhalb des angegebenen „ rectangle “ mit dem angegebenen „ flags “ unter Verwendung des aktuell festgelegten „ font()“ gezeichnet wird; d. h., die Funktion gibt an, wo die Funktion „ drawText()“ bei Verwendung derselben Argumente zeichnen wird.

Wenn das „ text “ nicht in das angegebene „ rectangle “ unter Verwendung des angegebenen „ flags “ passt, gibt die Funktion das erforderliche Rechteck zurück.

Das Argument „ flags “ ist ein bitweises ODER der folgenden Flags:

Sind mehrere der Flags für die horizontale oder mehrere der Flags für die vertikale Ausrichtung gesetzt, ist die resultierende Ausrichtung undefiniert.

Siehe auch drawText(), Qt::Alignment und Qt::TextFlag.

QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)

Gibt das Begrenzungsrechteck des „ text “ zurück, wie es erscheinen wird, wenn es innerhalb des angegebenen „ rectangle “ mit dem angegebenen „ flags “ unter Verwendung des aktuell festgelegten „ font()“ gezeichnet wird.

Dies ist eine überladene Funktion.

QRectF QPainter::boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())

Anstatt Flags als bitweises ODER aus „ Qt::AlignmentFlag “ und „ Qt::TextFlag “ anzugeben, nimmt diese überladene Funktion ein Argument vom Typ „ option “ entgegen. Die Klasse „ QTextOption “ enthält eine Beschreibung allgemeiner Rich-Text-Eigenschaften.

Dies ist eine überladene Funktion.

Siehe auch „ QTextOption “.

QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)

Gibt das Begrenzungsrechteck des angegebenen text zurück, wie es erscheinen würde, wenn es innerhalb des Rechtecks gezeichnet würde, das am Punkt (x, y) beginnt und die Breite w sowie die Höhe h hat.

Dies ist eine überladene Funktion.

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 aktuellen Pinselursprung zurück. Verwenden Sie vorzugsweise QPainter::brushOriginF(), um den genauen Ursprung zu ermitteln.

Siehe auch ` setBrushOrigin()` und ` Settings`.

[since 6.11] QPointF QPainter::brushOriginF() const

Gibt den aktuellen Pinselursprung zurück.

Diese Funktion wurde in Qt 6.11 eingeführt.

Siehe auch „ setBrushOrigin()“ und „ Settings “.

QRectF QPainter::clipBoundingRect() const

Gibt das Begrenzungsrechteck des aktuellen Clips zurück, sofern ein Clip vorhanden ist; andernfalls wird ein leeres Rechteck zurückgegeben. Beachten Sie, dass der Clip-Bereich in logischen Koordinaten angegeben wird.

Es kann nicht garantiert werden, dass das Begrenzungsrechteck eng anliegt.

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 Ausschnitt nicht explizit, da dies von der zugrunde liegenden Funktion „ QPaintEngine “ übernommen wird. Daher wird der Pfad bei Bedarf neu erstellt und in das aktuelle logische Koordinatensystem transformiert. Dies kann eine rechenintensive Operation sein.

Siehe auch „ setClipPath()“, „ clipRegion()“ und „ setClipping()“.

QRegion QPainter::clipRegion() const

Gibt den aktuell festgelegten Clip-Bereich zurück. Beachten Sie, dass der Clip-Bereich in logischen Koordinaten angegeben wird.

Warnung: ` QPainter ` speichert den kombinierten Ausschnitt nicht explizit, da dies von der zugrunde liegenden Funktion ` QPaintEngine` übernommen wird. Daher wird der Pfad bei Bedarf neu erstellt und in das aktuelle logische Koordinatensystem transformiert. Dies ist potenziell ein rechenintensiver Vorgang.

Siehe auch ` setClipRegion()`, ` clipPath()` und ` setClipping()`.

QTransform QPainter::combinedTransform() const

Gibt die Transformationsmatrix zurück, die die aktuelle Fenster-/Ansichtsbereichstransformation und die 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 Zeichenobjekt zurück, auf dem dieser „Painter“ gerade zeichnet, oder „ nullptr “, falls der „Painter“ nicht aktiv ist.

Siehe auch isActive().

const QTransform &QPainter::deviceTransform() const

Gibt die Matrix zurück, die eine Transformation von logischen Koordinaten in Gerätekordinaten des plattformabhängigen Zeichen-Geräts durchführt.

Diese Funktion wird nur benötigt, wenn plattformabhängige Zeichenbefehle auf dem plattformabhängigen Handle (Qt::HANDLE) verwendet werden und die Plattform die Transformationen nicht nativ durchführt.

Anhand der Enumeration ` QPaintEngine::PaintEngineFeature ` lässt sich abfragen, 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 Werte rectangle, startAngle und spanAngle definiert ist.

Die Werte „ startAngle “ und „ spanAngle “ müssen in 1/16 Grad angegeben werden, d. h. ein Vollkreis entspricht 5760 (16 × 360). Positive Winkelwerte bedeuten eine Drehung gegen den Uhrzeigersinn, negative Winkelwerte eine Drehung im Uhrzeigersinn. Null Grad entspricht der 3-Uhr-Position. Wenn rectangle nicht quadratisch ist, handelt es sich um exzentrische Winkel, die nicht die Richtung vom Mittelpunkt des Rechtecks aus messen, wie unter Arcs and Ellipses beschrieben.

Bogenkurve
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawArc(rectangle, startAngle, spanAngle);

Siehe auch drawPie(), drawChord() und Koordinatensystem.

void QPainter::drawArc(const QRect &rectangle, int startAngle, int spanAngle)

Zeichnet den Bogen, der durch die angegebenen Werte rectangle, startAngle und spanAngle definiert ist.

Dies ist eine überladene Funktion.

void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)

Zeichnet den durch das Rechteck definierten Bogen, das bei (x, y) beginnt, mit den angegebenen Werten für „ width “ und „ height “ sowie den vorgegebenen Werten für „ startAngle “ und „ spanAngle “.

Dies ist eine überladene Funktion.

void QPainter::drawChord(const QRectF &rectangle, int startAngle, int spanAngle)

Zeichnet die Sehne, die durch die angegebenen Werte „ rectangle “, „ startAngle “ und „ spanAngle “ definiert ist. Die Sehne wird mit der aktuellen Füllfarbe „ brush()“ ausgefüllt.

Die Winkel „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 eine Drehung gegen den Uhrzeigersinn, während negative Werte eine Drehung im Uhrzeigersinn bedeuten. Null Grad entspricht der 3-Uhr-Position. Wenn rectangle nicht quadratisch ist, handelt es sich um exzentrische Winkel, die nicht die Richtung vom Mittelpunkt des Rechtecks aus messen, wie unter Arcs and Ellipses beschrieben.

Akkordform
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawChord(rect, startAngle, spanAngle);

Siehe auch „ drawArc()“, „ drawPie()“ und „Koordinatensystem“.

void QPainter::drawChord(const QRect &rectangle, int startAngle, int spanAngle)

Zeichnet die Chord, die durch die angegebenen Werte rectangle, startAngle und spanAngle definiert ist.

Dies ist eine überladene Funktion.

void QPainter::drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)

Zeichnet die Sehne, die durch das Rechteck mit den Eckpunkten (x, y) definiert ist, unter Verwendung der angegebenen Werte für „ width “ und „ height “ sowie der vorgegebenen Werte für „ startAngle “ und „ spanAngle “.

Dies ist eine überladene Funktion.

void QPainter::drawConvexPolygon(const QPointF *points, int pointCount)

Zeichnet das konvexe Polygon, das durch die ersten pointCount Punkte im Array points definiert ist, mit dem aktuellen Stift.

Vierseitiges Vieleck
static const QPointF points[4] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
    QPointF(90.0, 70.0)
};

QPainter painter(this);
painter.drawConvexPolygon(points, 4);

Der erste Punkt wird implizit mit dem letzten Punkt verbunden, und das Polygon wird mit der aktuellen Füllfarbe brush() ausgefüllt. Ist das übergebene Polygon nicht konvex, d. h. enthält es 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)

Zeichnet das durch polygon definierte konvexe Polygon mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

void QPainter::drawConvexPolygon(const QPolygonF &polygon)

Zeichnet das durch polygon definierte konvexe Polygon mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

void QPainter::drawConvexPolygon(const QPoint *points, int pointCount)

Zeichnet das konvexe Polygon, das durch die ersten pointCount Punkte im Array points definiert ist, mit dem aktuellen Stift.

Dies ist eine überladene Funktion.

void QPainter::drawEllipse(const QRectF &rectangle)

Zeichnet die Ellipse, die durch die angegebene „ rectangle “ definiert ist.

Eine gefüllte Ellipse hat die Größe von ` rectangle`. `size()`. Eine umrandete Ellipse hat die Größe von ` rectangle`. `size()` zuzüglich der Stiftbreite.

Umriss einer Ellipse
QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawEllipse(rectangle);

Siehe auch „ drawPie“ () und „Koordinatensystem“.

void QPainter::drawEllipse(const QRect &rectangle)

Zeichnet die Ellipse, die durch die angegebenen Koordinaten rectangle definiert ist.

Dies ist eine überladene Funktion.

void QPainter::drawEllipse(const QPoint &center, int rx, int ry)

Zeichnet die Ellipse, die an der Position center liegt und die Radien rx und ry hat.

Dies ist eine überladene Funktion.

void QPainter::drawEllipse(const QPointF &center, qreal rx, qreal ry)

Zeichnet die Ellipse, die bei Koordinaten center positioniert ist und die Radien rx und ry aufweist.

Dies ist eine überladene Funktion.

void QPainter::drawEllipse(int x, int y, int width, int height)

Zeichnet die Ellipse, die durch das Rechteck mit den Eckpunkten (x, y) und den angegebenen Werten width und height definiert ist.

Dies ist eine überladene Funktion.

void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)

Zeichnet die Glyphen, die unter glyphs auf position dargestellt sind. Die „ position “ gibt die Kante der Grundlinie für die Glyphenfolge an. Die Glyphen werden aus der unter glyphs ausgewählten Schriftart und an den Offsets abgerufen, die durch die Positionen in glyphs angegeben sind.

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 Ausschnitt source des angegebenen Bildes image in das Rechteck target im Zeichenobjekt.

Hinweis: Das Bild wird so skaliert, dass es in das Rechteck passt, falls die Größe des Bildes und die des Rechtecks nicht übereinstimmen.

Hinweis: Unter Drawing High Resolution Versions of Pixmaps and Images erfahren Sie , wie dies durch QImage::devicePixelRatio() beeinflusst wird.

Wenn das Bild angepasst werden muss, um in ein Ergebnis mit niedrigerer Auflösung zu passen (z. B. Konvertierung von 32-Bit auf 8-Bit), verwenden Sie die Funktion „ flags “, um festzulegen, wie dies erfolgen soll.

QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(":/images/myImage.png");

QPainter painter(this);
painter.drawImage(target, image, source);

Siehe auch drawPixmap() und QImage::devicePixelRatio().

void QPainter::drawImage(const QPoint &point, const QImage &image)

Zeichnet die angegebene Funktion „ image “ an der angegebenen Stelle „ point “.

Dies ist eine überladene Funktion.

void QPainter::drawImage(const QPointF &point, const QImage &image)

Zeichnet die angegebene „ image “ an der angegebenen Position „ point “.

Dies ist eine überladene Funktion.

void QPainter::drawImage(const QRect &rectangle, const QImage &image)

Zeichnet das angegebene Bild „ image “ in das angegebene Rechteck „ rectangle “.

Hinweis: Das Bild wird so skaliert, dass es in das Rechteck passt, falls die Größe des Bildes und die des Rechtecks nicht übereinstimmen.

Dies ist eine überladene Funktion.

void QPainter::drawImage(const QRectF &rectangle, const QImage &image)

Zeichnet das angegebene Bild „ image “ in das angegebene Rechteck „ rectangle “.

Hinweis: Das Bild wird so skaliert, dass es in das Rechteck passt, falls Bild- und Rechteckgröße nicht übereinstimmen.

Dies ist eine überladene Funktion.

void QPainter::drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)

Zeichnet den rechteckigen Ausschnitt source der angegebenen image mit dem Ursprung am angegebenen point.

Dies ist eine überladene Funktion.

void QPainter::drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)

Zeichnet den rechteckigen Ausschnitt source der angegebenen image mit dem Ursprung am angegebenen point.

Dies ist eine überladene Funktion.

void QPainter::drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)

Zeichnet den rechteckigen Ausschnitt source des angegebenen image in das Rechteck target im Malgerät.

Hinweis: Das Bild wird an die Größe des Rechtecks angepasst, wenn Bild- und Rechteckgröße nicht übereinstimmen.

Dies ist eine überladene Funktion.

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)

Zeichnet ein Bild an der Position (x, y), indem ein Teil von image in das Zeichenobjekt kopiert wird.

(x, y) gibt den Punkt links oben im Zeichenbereich an, auf den gezeichnet werden soll. (sx, sy) gibt den Punkt links oben in image an, der gezeichnet werden soll. Der Standardwert ist (0, 0).

(sw, sh) gibt die Größe des zu zeichnenden Bildes an. Der Standardwert (0, 0) (sowie negative Werte) bedeutet, dass bis zur unteren rechten Ecke des Bildes gezeichnet wird.

Dies ist eine überladene Funktion.

void QPainter::drawLine(const QLineF &line)

Zeichnet eine Linie, die durch line definiert ist.

Diagonale Linie
QLineF line(10.0, 80.0, 90.0, 20.0);

QPainter painter(this);
painter.drawLine(line);

Siehe auch drawLines(), drawPolyline() und Koordinatensystem.

void QPainter::drawLine(const QLine &line)

Zeichnet eine Linie, die durch ` line` definiert ist.

Dies ist eine überladene Funktion.

void QPainter::drawLine(const QPoint &p1, const QPoint &p2)

Zeichnet eine Linie von p1 nach p2.

Dies ist eine überladene Funktion.

void QPainter::drawLine(const QPointF &p1, const QPointF &p2)

Zeichnet eine Linie von p1 nach p2.

Dies ist eine überladene Funktion.

void QPainter::drawLine(int x1, int y1, int x2, int y2)

Zeichnet eine Linie von (x1, y1) nach (x2, y2).

Dies ist eine überladene Funktion.

void QPainter::drawLines(const QLineF *lines, int lineCount)

Zeichnet die ersten lineCount Zeilen im Array lines mit dem aktuellen Stift.

Siehe auch „ drawLine()“ und „ drawPolyline()“.

void QPainter::drawLines(const QList<QLine> &lines)

Zeichnet die durch die Liste „ lines “ definierten Linien mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

void QPainter::drawLines(const QList<QLineF> &lines)

Zeichnet die durch die Liste „ lines “ definierten Linien mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

void QPainter::drawLines(const QList<QPoint> &pointPairs)

Zeichnet mit dem aktuellen Stift für jedes Punktpaar im Vektor „ pointPairs “ eine Linie.

Dies ist eine überladene Funktion.

void QPainter::drawLines(const QList<QPointF> &pointPairs)

Zeichnet für jedes Punktpaar im Vektor „ pointPairs “ mit dem aktuellen Stift eine Linie. Enthält das Array eine ungerade Anzahl von Punkten, wird der letzte Punkt ignoriert.

Dies ist eine überladene Funktion.

void QPainter::drawLines(const QLine *lines, int lineCount)

Zeichnet die ersten lineCount Zeilen im Array lines mit dem aktuellen Stift.

Dies ist eine überladene Funktion.

void QPainter::drawLines(const QPoint *pointPairs, int lineCount)

Zeichnet die ersten lineCount Zeilen im Array pointPairs mit dem aktuellen Stift.

Dies ist eine überladene Funktion.

void QPainter::drawLines(const QPointF *pointPairs, int lineCount)

Zeichnet die ersten lineCount Zeilen im Array pointPairs mit dem aktuellen Stift. Die Zeilen werden als Punktpaare angegeben, daher muss die Anzahl der Einträge in pointPairs mindestens lineCount * 2 betragen.

Dies ist eine überladene Funktion.

void QPainter::drawPath(const QPainterPath &path)

Zeichnet den angegebenen Painter- path, wobei der aktuelle Stift für die Kontur und der aktuelle Pinsel für die Füllung verwendet werden.

Bézier-Kurvenverlauf
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 „Painter Paths “ und das Beispiel „Vector Deformation“.

void QPainter::drawPicture(const QPointF &point, const QPicture &picture)

Gibt die angegebene „ picture “ unter der angegebenen „ point “ wieder.

Die Klasse „ QPicture “ ist ein Zeichen-Gerät, das „ QPainter “-Befehle aufzeichnet und wiederabspielt. Ein „Picture“ serialisiert die Zeichenbefehle in einem plattformunabhängigen Format auf ein E/A-Gerät. Alles, was auf ein Widget oder eine Pixmap gezeichnet werden kann, kann auch in einem „Picture“ gespeichert werden.

Diese Funktion verhält sich genau wie „ QPicture::play()“, wenn sie mit „ point = QPointF(0, 0)“ aufgerufen wird.

Hinweis: Der Zustand des Painters bleibt durch diese Funktion erhalten.

QPicture picture;
QPointF point(10.0, 20.0);
picture.load("drawing.pic");

QPainter painter(this);
painter.drawPicture(0, 0, picture);

Siehe auch ` QPicture::play()`.

void QPainter::drawPicture(const QPoint &point, const QPicture &picture)

Spielt die angegebene Datei „ picture “ unter der angegebenen Adresse „ point “ ab.

Dies ist eine überladene Funktion.

void QPainter::drawPicture(int x, int y, const QPicture &picture)

Zeichnet die angegebene Funktion „ picture “ am Punkt (x, y).

Dies ist eine überladene Funktion.

void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)

Zeichnet ein Kreisdiagramm, das durch die angegebenen Werte rectangle, startAngle und spanAngle definiert ist.

Das Kreisdiagramm wird mit dem aktuellen brush() gefüllt.

Die Werte für `startAngle` und `spanAngle` müssen in 1/16 Grad angegeben werden, d. h. ein voller Kreis entspricht 5760 (16 * 360). Positive Winkelwerte bedeuten eine Drehung gegen den Uhrzeigersinn, negative Werte eine Drehung im Uhrzeigersinn. Null Grad entspricht der 3-Uhr-Position. Wenn „ rectangle “ nicht quadratisch ist, handelt es sich um exzentrische Winkel, die nicht die Richtung vom Mittelpunkt des Rechtecks aus messen, wie unter Arcs and Ellipses beschrieben.

Form eines Tortenstücks
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawPie(rectangle, startAngle, spanAngle);

Siehe auch „ drawEllipse()“, „ drawChord()“ und „Koordinatensystem“.

void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle)

Zeichnet ein Kreisdiagramm, das durch die angegebenen Werte rectangle, startAngle und spanAngle definiert ist.

Dies ist eine überladene Funktion.

void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)

Zeichnet den Kreisausschnitt, der durch das Rechteck mit den Eckpunkten (x, y) definiert ist, mit den angegebenen Werten für „ width “ und „ height “ sowie den vorgegebenen Werten für „ startAngle “ und „ spanAngle “.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)

Zeichnet den rechteckigen Ausschnitt source des angegebenen Bildes pixmap in das angegebene target im Zeichen-Device.

Hinweis: Die Pixmap wird an das Rechteck angepasst, falls die Größe der Pixmap und die des Rechtecks nicht übereinstimmen.

Hinweis: Informationen dazu, wie dies durch QPixmap::devicePixelRatio() beeinflusst wird,finden Sie unter Drawing High Resolution Versions of Pixmaps and Images.

QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QPixmap pixmap(":myPixmap.png");

QPainter painter(this);
painter.drawPixmap(target, pixmap, source);

Ist „ pixmap “ ein „ QBitmap “, wird die Pixmap mit den „gesetzten“ Bits in der Farbe des Stifts gezeichnet. Ist „ backgroundMode “ ein „ Qt::OpaqueMode “, werden die „nicht gesetzten“ Bits in der Farbe des Hintergrundpinsels gezeichnet; ist „ backgroundMode “ ein „ Qt::TransparentMode “, sind die „nicht gesetzten“ Bits transparent. Das Zeichnen von Bitmaps mit Farbverläufen oder Texturfarben wird nicht unterstützt.

Siehe auch „ drawImage “ () und „ QPixmap::devicePixelRatio “ ().

void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)

Zeichnet die angegebene Funktion pixmap mit ihrem Ursprung am angegebenen Punkt point.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)

Zeichnet die angegebene Funktion pixmap mit ihrem Ursprung am angegebenen Punkt point.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(const QRect &rectangle, const QPixmap &pixmap)

Zeichnet die angegebene Bilddatei „ pixmap “ in das angegebene Rechteck „ rectangle “.

Hinweis: Die Pixmap wird so skaliert, dass sie in das Rechteck passt, falls die Größe der Pixmap und die des Rechtecks nicht übereinstimmen.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)

Zeichnet den rechteckigen Ausschnitt source der angegebenen pixmap mit dem Ursprung am angegebenen point.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)

Zeichnet den rechteckigen Ausschnitt source der angegebenen pixmap mit dem Ursprung am angegebenen point.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)

Zeichnet den rechteckigen Ausschnitt source des angegebenen Bildes pixmap in das angegebene Rechteck target im Zeichen-Device.

Hinweis: Die Pixmap wird an das Rechteck angepasst, falls die Größe der Pixmap und die des Rechtecks nicht übereinstimmen.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap)

Zeichnet das angegebene „ pixmap “ an der Position (x, y).

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)

Zeichnet die „ pixmap “ in das Rechteck an der Position (x, y) mit den angegebenen Werten „ width “ und „ height “.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)

Zeichnet eine Pixmap an den Koordinaten (x, y), indem ein Teil der angegebenen „ pixmap “ in das Zeichen-Device kopiert wird.

(x, y) gibt den Punkt links oben im Zeichenbereich an, auf den gezeichnet werden soll. (sx, sy) gibt den Punkt links oben in der „ pixmap “ an, die gezeichnet werden soll. Der Standardwert ist (0, 0).

(sw, sh) gibt die Größe der Pixmap an, die gezeichnet werden soll. Der Standardwert (0, 0) (sowie negative Werte) bedeutet, dass bis zur unteren rechten Ecke der Pixmap gezeichnet wird.

Dies ist eine überladene Funktion.

void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)

Zeichnet den rechteckigen Ausschnitt mit dem Ursprung (sx, sy), der Breite sw und der Höhe sh des angegebenen pixmap am Punkt (x, y) mit einer Breite von w und einer Höhe von h. Sind sw oder sh gleich Null, werden die Breite bzw. Höhe der Pixmap verwendet und um den Versatz sx/sy angepasst;

Dies ist eine überladene Funktion.

void QPainter::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())

Diese Funktion dient dazu, pixmap oder ein Teilrechteck von pixmap an mehreren Positionen mit unterschiedlichem Maßstab, unterschiedlicher Drehung und unterschiedlicher Deckkraft zu zeichnen. fragments ist ein Array aus fragmentCount Elementen, die die Parameter für das Zeichnen der einzelnen Pixmap-Fragmente festlegen. Der Parameter hints kann verwendet werden, um Zeichnungshinweise zu übergeben.

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 Koordinaten position, wobei die Farbe des aktuellen Stifts verwendet wird.

Siehe auch Koordinatensystem.

void QPainter::drawPoint(const QPoint &position)

Zeichnet einen einzelnen Punkt an der angegebenen Koordinaten position, wobei die Farbe des aktuellen Stifts verwendet wird.

Dies ist eine überladene Funktion.

void QPainter::drawPoint(int x, int y)

Zeichnet einen einzelnen Punkt an der Position (x, y).

Dies ist eine überladene Funktion.

void QPainter::drawPoints(const QPointF *points, int pointCount)

Zeichnet die ersten pointCount Punkte im Array points mit der Farbe des aktuellen Stifts.

Siehe auch Koordinatensystem.

void QPainter::drawPoints(const QPolygon &points)

Zeichnet die Punkte des Vektors „ points “.

Dies ist eine überladene Funktion.

void QPainter::drawPoints(const QPolygonF &points)

Zeichnet die Punkte des Vektors points.

Dies ist eine überladene Funktion.

void QPainter::drawPoints(const QPoint *points, int pointCount)

Zeichnet die ersten pointCount Punkte im Array points mit der Farbe des aktuellen Stifts.

Dies ist eine überladene Funktion.

void QPainter::drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)

Zeichnet das Polygon, das durch die ersten Punkte ` pointCount ` im Array ` points ` definiert ist, mit dem aktuellen Stift und Pinsel.

Vierseitiges Vieleck
static const QPointF points[4] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
    QPointF(90.0, 70.0)
};

QPainter painter(this);
painter.drawPolygon(points, 4);

Der erste Punkt wird implizit mit dem letzten Punkt verbunden, und das Polygon wird mit dem aktuellen „ brush()“ ausgefüllt.

Ist ` fillRule ` gleich ` Qt::WindingFill`, wird das Polygon mit dem „Winding“-Füllalgorithmus gefüllt. Ist ` fillRule ` gleich ` Qt::OddEvenFill`, wird das Polygon mit dem „Odd-Even“-Füllalgorithmus gefüllt. Eine ausführlichere Beschreibung dieser Füllregeln finden Sie unter Qt::FillRule.

Siehe auch „ drawConvexPolygon()“, „ drawPolyline()“ und „Koordinatensystem“.

void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)

Zeichnet das durch die angegebene Koordinatenliste ` points ` definierte Polygon unter Verwendung der Füllregel ` fillRule`.

Dies ist eine überladene Funktion.

void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)

Zeichnet das durch die angegebene Koordinaten points definierte Polygon unter Verwendung der Füllregel „ fillRule “.

Dies ist eine überladene Funktion.

void QPainter::drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)

Zeichnet das Polygon, das durch die ersten pointCount Punkte im Array points definiert ist.

Dies ist eine überladene Funktion.

void QPainter::drawPolyline(const QPointF *points, int pointCount)

Zeichnet die durch die ersten Punkte von ` pointCount ` in ` points ` definierte Polylinie mit dem aktuellen Stift.

Beachten Sie, dass im Gegensatz zur Funktion „ drawPolygon()“ der letzte Punkt nicht mit dem ersten verbunden wird und die Polylinie auch nicht ausgefüllt wird.

static const QPointF points[3] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
};

QPainter painter(this);
painter.drawPolyline(points, 3);

Siehe auch „ drawLines()“, „ drawPolygon()“ und „Koordinatensystem“.

void QPainter::drawPolyline(const QPolygon &points)

Zeichnet die durch die angegebene „ points “ definierte Polylinie mit dem aktuellen Stift.

Dies ist eine überladene Funktion.

void QPainter::drawPolyline(const QPolygonF &points)

Zeichnet die durch die angegebene „ points “ definierte Polylinie mit dem aktuellen Stift.

Dies ist eine überladene Funktion.

void QPainter::drawPolyline(const QPoint *points, int pointCount)

Zeichnet die durch die ersten pointCount Punkte in points definierte Polylinie mit dem aktuellen Stift.

Dies ist eine überladene Funktion.

void QPainter::drawRect(const QRectF &rectangle)

Zeichnet das aktuelle rectangle mit dem aktuellen Stift und Pinsel.

Ein gefülltes Rechteck hat die Größe von ` rectangle`. `size()`. Ein umrandetes Rechteck hat die Größe von ` rectangle`. `size() ` plus die Stiftbreite.

Rechteckumriss
QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawRect(rectangle);

Siehe auch drawRects(), drawPolygon() und Koordinatensystem.

void QPainter::drawRect(const QRect &rectangle)

Zeichnet das aktuelle rectangle mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

void QPainter::drawRect(int x, int y, int width, int height)

Zeichnet ein Rechteck, dessen linke obere Ecke bei (x, y) liegt und dessen Breite und Höhe durch die angegebenen Werte width und height definiert sind.

Dies ist eine überladene Funktion.

void QPainter::drawRects(const QRectF *rectangles, int rectCount)

Zeichnet den ersten „ rectCount “ des angegebenen „ rectangles “ mit dem aktuellen Stift und Pinsel.

Siehe auch drawRect().

void QPainter::drawRects(const QList<QRect> &rectangles)

Zeichnet das angegebene „ rectangles “ mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

void QPainter::drawRects(const QList<QRectF> &rectangles)

Zeichnet das angegebene „ rectangles “ mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

void QPainter::drawRects(const QRect *rectangles, int rectCount)

Zeichnet das erste „ rectCount “ des angegebenen „ rectangles “ mit dem aktuellen Stift und Pinsel.

Dies ist eine überladene Funktion.

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 “ auf „ Qt::RelativeSize “ gesetzt ist, werden „ xRadius “ und „ yRadius “ in Prozent der halben Breite bzw. Höhe des Rechtecks angegeben und sollten im Bereich von 0,0 bis 100,0 liegen.

Ein gefülltes Rechteck hat die Größe von rect.size(). Ein umrandetes Rechteck hat die Größe von rect.size() zuzüglich der Stiftbreite.

Umriss eines abgerundeten Rechtecks
QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawRoundedRect(rectangle, 20.0, 15.0);

Siehe auch „ drawRect()“ und „ QPen “.

void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)

Zeichnet das angegebene Rechteck „ rect “ mit abgerundeten Ecken.

Dies ist eine überladene Funktion.

void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)

Zeichnet das angegebene Rechteck x, y, w, h mit abgerundeten Ecken.

Dies ist eine überladene Funktion.

void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)

Zeichnet die angegebene „ staticText “ an der angegebenen „ topLeftPosition “.

Der Text wird unter Verwendung der Schriftart und der Transformation gezeichnet, die für den „Painter“ festgelegt wurden. Wenn sich die für den „Painter“ festgelegte Schriftart und/oder Transformation von denen unterscheiden, die zur Initialisierung des Layouts von „ QStaticText “ verwendet wurden, muss das Layout neu berechnet werden. Verwenden Sie „ QStaticText::prepare()“, um „ staticText “ mit der Schriftart und der Transformation zu initialisieren, mit denen es später gezeichnet wird.

Wenn „ topLeftPosition “ nicht mehr dem Wert zum Zeitpunkt der Initialisierung von „ staticText “ oder zum Zeitpunkt der letzten Darstellung entspricht, entsteht ein geringer Mehraufwand beim Verschieben des Textes an seine neue Position.

Hinweis: Ist die Transformation des „Painters“ nicht affin, wird „ staticText “ mithilfe regulärer Aufrufe von „ drawText()“ gezeichnet, wodurch jegliches Potenzial für eine Leistungssteigerung verloren geht.

Hinweis: Die y-Position wird als Oberkante der Schriftart verwendet.

Siehe auch „ QStaticText “.

void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)

Zeichnet die Schriftart „ staticText “ an der Position „ topLeftPosition “.

Hinweis: Die y-Position wird als Oberkante der Schriftart verwendet.

Dies ist eine überladene Funktion.

void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)

Zeichnet die Schriftart „ staticText “ an den Koordinaten left und top.

Hinweis: Die y-Position wird als Oberkante der Schriftart verwendet.

Dies ist eine überladene Funktion.

void QPainter::drawText(const QPointF &position, const QString &text)

Zeichnet das angegebene ` text ` mit der aktuell definierten Textrichtung, beginnend bei der angegebenen ` position`.

Diese Funktion verarbeitet das Zeilenumbruchzeichen (\n) nicht, da sie den Text nicht in mehrere Zeilen aufteilen und das Zeilenumbruchzeichen nicht anzeigen kann. Verwenden Sie stattdessen die Überladung von QPainter::drawText(), die ein Rechteck als Argument akzeptiert, wenn Sie mehrere Textzeilen mit dem Zeilenumbruchzeichen zeichnen möchten oder wenn der Text umgebrochen werden soll.

Standardmäßig zeichnet QPainter Text mit Kantenglättung.

Hinweis: Die y-Position wird als Grundlinie der Schriftart verwendet.

Siehe auch ` setFont()` und ` setPen()`.

void QPainter::drawText(const QPoint &position, const QString &text)

Zeichnet den angegebenen Text „ text “ mit der aktuell definierten Textrichtung, beginnend an der angegebenen Position „ position “.

Standardmäßig zeichnet „ QPainter “ den Text mit Kantenglättung.

Hinweis: Die y-Position wird als Grundlinie der Schriftart verwendet.

Dies ist eine überladene Funktion.

Siehe auch setFont() und setPen().

void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())

Zeichnet das angegebene „ text “ in das „ rectangle “, das mithilfe von „ option “ festgelegt wurde, um dessen Position, Richtung und Ausrichtung zu steuern. Die in „ option “ angegebenen Optionen überschreiben diejenigen, die für das „ QPainter “-Objekt selbst festgelegt wurden.

Standardmäßig zeichnet „ QPainter “ Text mit Kantenglättung.

Hinweis: Die y-Koordinate von „ rectangle “ wird als Oberkante der Schriftart verwendet.

Dies ist eine überladene Funktion.

Siehe auch „ setFont()“ und „ setPen()“.

void QPainter::drawText(int x, int y, const QString &text)

Zeichnet den angegebenen Text „ text “ an der Position (x, y) unter Verwendung der aktuell definierten Textrichtung des Zeichners.

Standardmäßig zeichnet „ QPainter “ den Text mit Kantenglättung.

Hinweis: Die y-Position wird als Grundlinie der Schriftart verwendet.

Dies ist eine überladene Funktion.

Siehe auch setFont() und setPen().

void QPainter::drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)

Zeichnet das angegebene „ text “ innerhalb des angegebenen „ rectangle “ gemäß dem festgelegten „ flags “.

Die „ boundingRect “ (sofern nicht null) wird so festgelegt, dass das Begrenzungsrechteck den gesamten Text umschließt. In der folgenden Abbildung stellt die gepunktete Linie beispielsweise den von der Funktion berechneten „ boundingRect “ dar, während die gestrichelte Linie den „ rectangle “ darstellt:

Text mit Begrenzungsrechtecken
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 Oberkante der Schriftart verwendet.

Dies ist eine überladene Funktion.

Siehe auch „ setFont()“ und „ setPen()“.

void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)

Zeichnet das angegebene „ text “ innerhalb des angegebenen „ rectangle “. Die „ rectangle “ definieren zusammen mit der Ausrichtung „ flags “ die Anker für das „ text “.

Text, der das Qt-Projekt zeigt
QPainter painter(this);
painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject"));

Das Argument ` boundingRect ` (sofern nicht null) legt fest, wie das Begrenzungsrechteck aussehen soll, um den gesamten Text zu umfassen. In der folgenden Abbildung stellt beispielsweise die gepunktete Linie den von der Funktion berechneten ` boundingRect ` dar, während die gestrichelte Linie den ` rectangle` darstellt:

Text mit Begrenzungsrechtecken
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 aus den folgenden Flags:

Standardmäßig zeichnet „ QPainter “ den Text mit Anti-Aliasing.

Hinweis: Die y-Koordinate von „ rectangle “ wird als Oberkante der Schriftart verwendet.

Dies ist eine überladene Funktion.

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)

Zeichnet das angegebene „ text “ innerhalb des Rechtecks mit den Koordinaten (x, y), width und height.

Das Argument „ boundingRect “ (sofern nicht null) legt fest, wie das Begrenzungsrechteck aussehen soll, um den gesamten Text zu umfassen. In der folgenden Abbildung stellt die gepunktete Linie beispielsweise den von der Funktion berechneten Wert für „ boundingRect “ dar, während die gestrichelte Linie das Rechteck darstellt, das durch „ x “, „ y “, „ width “ und „ height “ definiert ist:

Text mit Begrenzungsrechtecken
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 eine bitweise ODER-Verknüpfung der folgenden Flags:

Standardmäßig zeichnet ` QPainter ` Text mit Kantenglättung.

Hinweis: Die y-Position wird als Oberkante der Schriftart verwendet.

Dies ist eine überladene Funktion.

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()` entspricht in etwa dem mehrmaligen Aufruf von ` drawPixmap()`, um einen Bereich mit einer Pixmap zu füllen (kacheln), ist jedoch je nach zugrunde liegendem Fenstersystem potenziell wesentlich effizienter.

drawTiledPixmap() erzeugt auf Displays mit hoher dpi-Auflösung (mit devicePixelRatio > 1) dasselbe visuelle Kachelmuster wie auf Displays mit normaler dpi-Auflösung. Stellen Sie den Parameter `devicePixelRatio` bei ` pixmap ` ein, um die Kachelgröße zu steuern. Wenn Sie ihn beispielsweise auf 2 setzen, werden Breite und Höhe der Kacheln halbiert (sowohl auf 1x- als auch auf 2x-Displays), und auf 2x-Displays wird eine hochauflösende Ausgabe erzeugt.

Der Versatz des „ position “ wird in geräteunabhängigen Pixeln relativ zur oberen linken Ecke des „ rectangle “ angegeben. Mit dem „ position “ lässt sich das sich wiederholende Muster innerhalb des „ rectangle “ ausrichten.

Siehe auch „ drawPixmap()“.

void QPainter::drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = QPoint())

Zeichnet einen gekachelten „ pixmap “ innerhalb des angegebenen „ rectangle “ mit dem Ursprung am angegebenen „ position “.

Dies ist eine überladene Funktion.

void QPainter::drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)

Zeichnet einen gekachelten „ pixmap “ in das angegebene Rechteck.

(x, y) gibt den Punkt in der oberen linken Ecke des Zeichenbereichs an, auf den gezeichnet werden soll; mit den angegebenen Werten für width und height.

(sx, sy) gibt den Ursprung innerhalb des angegebenen Rechtecks an, in dem die Pixmap gezeichnet werden soll. Die Ursprungsposition wird in geräteunabhängigen Pixeln relativ zu (x, y) angegeben. Der Standardwert ist (0, 0).

Dies ist eine überladene Funktion.

bool QPainter::end()

Beendet den Malvorgang. Alle während des Malvorgangs verwendeten Ressourcen werden freigegeben. Normalerweise müssen Sie diese Funktion nicht aufrufen, da sie vom Destruktor aufgerufen wird.

Gibt ` true ` zurück, wenn der Painter nicht mehr aktiv ist; andernfalls gibt er ` false` zurück.

Siehe auch „ begin()“ und „ isActive()“.

void QPainter::endNativePainting()

Stellt den Painter nach der manuellen Ausgabe nativer Malbefehle wieder her. Ermöglicht es dem Painter, jeden nativen Zustand wiederherzustellen, auf den er angewiesen ist, bevor er weitere Painter-Befehle aufruft.

Siehe auch ` beginNativePainting()`.

void QPainter::eraseRect(const QRectF &rectangle)

Löscht den Bereich innerhalb der angegebenen rectangle. Entspricht dem Aufruf von

fillRect(rectangle, background());

Siehe auch fillRect().

void QPainter::eraseRect(const QRect &rectangle)

Löscht den Bereich innerhalb der angegebenen Koordinaten rectangle.

Dies ist eine überladene Funktion.

void QPainter::eraseRect(int x, int y, int width, int height)

Löscht den Bereich innerhalb des Rechtecks, beginnend bei (x, y), mit den angegebenen Werten width und height.

Dies ist eine überladene Funktion.

void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)

Füllt die angegebene „ path “ mit dem angegebenen „ brush “. Der Umriss wird nicht gezeichnet.

Alternativ können Sie anstelle eines „ QBrush “ einen „ QColor “ angeben; der Konstruktor „ QBrush “ (der ein „ QColor “-Argument erwartet) erstellt automatisch einen „Solid Pattern Brush“.

Siehe auch „ drawPath()“.

void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)

Füllt die angegebene „ rectangle “ mit der angegebenen „ brush “ auf.

Alternativ können Sie anstelle eines „ QBrush “ einen „ QColor “ angeben; der Konstruktor „ QBrush “ (der ein „ QColor “-Argument erwartet) erstellt automatisch einen Pinsel mit durchgehendem Muster.

Siehe auch „ drawRect()“.

void QPainter::fillRect(const QRect &rectangle, QGradient::Preset preset)

Füllt den angegebenen Bereich „ rectangle “ mit dem festgelegten Farbverlauf „ preset “.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)

Füllt den angegebenen Bereich „ rectangle “ mit dem angegebenen Pinsel „ style “.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)

Füllt das angegebene „ rectangle “ mit dem angegebenen „ color “ auf.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)

Füllt die angegebene ` rectangle ` mit dem angegebenen ` brush`.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRect &rectangle, const QColor &color)

Füllt das angegebene „ rectangle “ mit dem angegebenen „ color “.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRectF &rectangle, QGradient::Preset preset)

Füllt die angegebene Funktion „ rectangle “ mit dem angegebenen Gradienten „ preset “.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle style)

Füllt den angegebenen Bereich „ rectangle “ mit dem angegebenen Pinsel „ style “.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)

Füllt das angegebene ` rectangle ` mit dem angegebenen ` color`.

Dies ist eine überladene Funktion.

void QPainter::fillRect(const QRectF &rectangle, const QColor &color)

Füllt die angegebene „ rectangle “ mit dem angegebenen „ color “ auf.

Dies ist eine überladene Funktion.

void QPainter::fillRect(int x, int y, int width, int height, QGradient::Preset preset)

Füllt das Rechteck, das bei (x, y) beginnt, mit den angegebenen Werten width und height unter Verwendung des angegebenen Farbverlaufs preset.

Dies ist eine überladene Funktion.

void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)

Füllt das Rechteck, das bei (x, y) beginnt, mit den angegebenen Werten „ width “ und „ height “ unter Verwendung des angegebenen Pinsels „ style “.

Dies ist eine überladene Funktion.

void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)

Füllt das Rechteck, das bei (x, y) beginnt, mit den angegebenen Werten width und height unter Verwendung der angegebenen Funktion color.

Dies ist eine überladene Funktion.

void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)

Füllt das Rechteck, das bei (x, y) beginnt, mit den angegebenen Werten width und height unter Verwendung der angegebenen Funktion brush.

Dies ist eine überladene Funktion.

void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)

Füllt das Rechteck, das bei (x, y) beginnt, mit den angegebenen Werten width und height unter Verwendung der angegebenen Funktion color.

Dies ist eine überladene Funktion.

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, sofern dieser aktiv ist. Andernfalls ist der Rückgabewert undefiniert.

Siehe auch font(), isActive() und Settings.

QFontMetrics QPainter::fontMetrics() const

Gibt die Schriftartenmetriken für den Painter zurück, sofern dieser aktiv ist. Andernfalls ist der Rückgabewert undefiniert.

Siehe auch font(), isActive() und Settings.

bool QPainter::hasClipping() const

Gibt „ true “ zurück, wenn Clipping festgelegt wurde; andernfalls wird „ false “ zurückgegeben.

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 Ausrichtungsrichtung zurück.

Siehe auch QTextOption::textDirection(), setLayoutDirection(), drawText() und Settings.

qreal QPainter::opacity() const

Gibt die Deckkraft des Malwerkzeugs zurück. Der Standardwert ist 1.

Siehe auch „ setOpacity()“.

QPaintEngine *QPainter::paintEngine() const

Gibt die Paint-Engine zurück, mit der der Painter derzeit arbeitet, sofern der Painter aktiv ist; andernfalls 0.

Siehe auch ` isActive()`.

const QPen &QPainter::pen() const

Gibt den aktuellen Stift des Painters zurück.

Siehe auch setPen() und Settings.

QPainter::RenderHints QPainter::renderHints() const

Gibt ein Flag zurück, das die für diesen Painter festgelegten Darstellungshinweise angibt.

Siehe auch setRenderHints(), testRenderHint() und Rendering Quality.

void QPainter::resetTransform()

Setzt alle Transformationen zurück, die mit den Funktionen „ translate()“, „ scale()“, „ shear()“, „ rotate()“, „ setWorldTransform()“, „ setViewport()“ und „ setWindow()“ vorgenommen wurden.

Siehe auch Coordinate Transformations.

void QPainter::restore()

Stellt den aktuellen Zustand des Painters wieder her (entnimmt einen gespeicherten Zustand vom Stapel).

Siehe auch ` save()`.

void QPainter::rotate(qreal angle)

Dreht das Koordinatensystem im Uhrzeigersinn. Der angegebene Parameter „ angle “ wird in Grad angegeben.

Siehe auch ` setWorldTransform()` und ` Coordinate Transformations`.

void QPainter::save()

Speichert den aktuellen Zustand des Painters (legt den Zustand auf einen Stapel). Auf einen Aufruf von `save()` muss ein entsprechender Aufruf von ` restore()` folgen; die Funktion ` end()` löst den Stapel wieder auf.

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 Malwerkzeugs auf den angegebenen „ brush “.

Der Hintergrundpinsel ist der Pinsel, mit dem beim Zeichnen von deckendem Text, gepunkteten Linien und Bitmaps ausgefüllt wird. Der Hintergrundpinsel hat im Modus „Transparenter Hintergrund“ (der Standardmodus) keine Auswirkung.

Siehe auch background(), setBackgroundMode() und Settings.

void QPainter::setBackgroundMode(Qt::BGMode mode)

Setzt den Hintergrundmodus des Malwerkzeugs auf den angegebenen mode

Qt::TransparentMode (Standard) zeichnet gepunktete Linien und Text, ohne die Hintergrundpixel zu setzen. ` Qt::OpaqueMode ` füllt diesen Bereich 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 die angegebene „ brush “.

Der Pinsel des Malers legt fest, wie Formen gefüllt werden.

Siehe auch „ brush()“ und „ Settings “.

[since 6.11] void QPainter::setBrush(QBrush &&brush)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.11 eingeführt.

[since 6.9] void QPainter::setBrush(QColor color)

Stellt den Pinsel des Malers auf einen Vollpinsel mit dem angegebenen „ color “ ein.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.9 eingeführt.

void QPainter::setBrush(Qt::BrushStyle style)

Setzt den Pinsel des Malers auf die Farbe Schwarz und die angegebene „ style “.

Dies ist eine überladene Funktion.

[since 6.9] void QPainter::setBrush(Qt::GlobalColor color)

Stellt den Pinsel des Malers auf einen Vollpinsel mit dem angegebenen „ color “ ein.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.9 eingeführt.

void QPainter::setBrushOrigin(const QPointF &position)

Setzt den Pinselursprung auf position.

Der Pinselursprung gibt die Koordinate (0, 0) des Pinsels des Painters an.

Beachten Sie, dass die Funktion ` brushOrigin()` in Qt 3 zwar erforderlich war, um den Hintergrund des übergeordneten Elements für ein Widget zu übernehmen, dies jedoch in Qt 4 nicht mehr der Fall ist, da der Qt-4-Painter den Hintergrund nur dann zeichnet, wenn Sie dies explizit anweisen, indem Sie die Eigenschaft ` autoFillBackground ` des Widgets auf `true` setzen.

Siehe auch „ brushOrigin()“ und „ Settings “.

void QPainter::setBrushOrigin(const QPoint &position)

Setzt den Ursprung des Pinsels auf die angegebene Koordinaten position.

Dies ist eine überladene Funktion.

void QPainter::setBrushOrigin(int x, int y)

Setzt den Ursprung des Pinsels auf den Punkt (x, y).

Dies ist eine überladene Funktion.

void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)

Aktiviert das Clipping und legt den Clip-Pfad für den Painter auf den angegebenen „ path “ fest, mit dem Clip- operation.

Beachten Sie, dass der Ausschnittpfad in logischen (Maler-)Koordinaten angegeben wird.

Siehe auch clipPath(), clipRegion() und Clipping.

void QPainter::setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)

rectangle Aktiviert das Clipping und legt den Clipping-Bereich mithilfe der angegebenen Clip-Koordinaten operation auf die angegebenen Werte fest. Standardmäßig wird das aktuelle Clip-Rechteck ersetzt.

Beachten Sie, dass das Ausschnittrechteck in logischen (Painter-)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 legt den Clipping-Bereich auf das Rechteck fest, das an den Koordinaten (x, y) beginnt und die angegebenen Werte für „ width “ und „ height “ aufweist.

void QPainter::setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)

Aktiviert das Clipping und legt den Clip-Bereich mithilfe des angegebenen Clip- operation s auf den angegebenen rectangle fest.

Dies ist eine überladene Funktion.

void QPainter::setClipRegion(const QRegion &region, Qt::ClipOperation operation = Qt::ReplaceClip)

Legt den Clip-Bereich mithilfe der angegebenen Clip- operation auf die angegebene region fest. Standardmäßig wird der aktuelle Clip-Bereich durch den neuen 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 “ auf „true“ gesetzt ist, oder deaktiviert es, wenn „ enable “ auf „false“ gesetzt ist.

Siehe auch hasClipping() und Clipping.

void QPainter::setCompositionMode(QPainter::CompositionMode mode)

Stellt den Kompositionsmodus auf den angegebenen mode ein.

Warnung: Nur ein „ QPainter “, der auf einem „ QImage “ ausgeführt wird, unterstützt alle Kompositionsmodi vollständig. Die „RasterOp“-Modi werden für X11 unterstützt, wie unter compositionMode() beschrieben.

Siehe auch compositionMode().

void QPainter::setFont(const QFont &font)

Setzt die Schriftart des Malers auf die angegebene „ font “.

Diese Schriftart wird von nachfolgenden drawText()-Funktionen verwendet. Die Textfarbe entspricht der Stiftfarbe.

Wenn Sie eine Schriftart festlegen, die nicht verfügbar ist, sucht Qt nach einer möglichst ähnlichen. „ font()“ gibt den mit „setFont()“ festgelegten Wert zurück, und „ fontInfo()“ gibt die tatsächlich verwendete Schriftart zurück (die möglicherweise identisch ist).

Siehe auch font(), drawText() und Settings.

void QPainter::setLayoutDirection(Qt::LayoutDirection direction)

Legt die vom „Painter“ beim Zeichnen von Text verwendete Ausrichtungsrichtung auf die angegebene „ direction “ fest.

Die Standardeinstellung ist ` Qt::LayoutDirectionAuto`, wodurch die Richtung implizit anhand des gezeichneten Textes ermittelt wird.

Siehe auch QTextOption::setTextDirection(), layoutDirection(), drawText() und Settings.

void QPainter::setOpacity(qreal opacity)

Stellt die Deckkraft des Malwerkzeugs auf „ opacity “ ein. 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 Malwerkzeug festgelegte Deckkraft gilt für jeden Zeichenvorgang separat. Das Ausfüllen einer Form und das Zeichnen ihres Umrisses werden als separate Zeichenvorgänge behandelt.

Siehe auch ` opacity()`.

void QPainter::setPen(const QPen &pen)

Legt den Zeichenstift so fest, dass er dem angegebenen „ pen “ entspricht.

Die „ pen “ legt fest, wie Linien und Konturen gezeichnet werden, und bestimmt außerdem die Textfarbe.

Siehe auch „ pen()“ und „ Settings “.

[since 6.11] void QPainter::setPen(QPen &&pen)

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.11 eingeführt.

void QPainter::setPen(Qt::PenStyle style)

Stellt den Zeichenstift so ein, dass er die angegebene style, die Breite 1 und die Farbe Schwarz hat.

Dies ist eine überladene Funktion.

void QPainter::setPen(const QColor &color)

Legt für den Zeichenstift den Stil „ Qt::SolidLine “, die Breite 1 und den angegebenen „ color “ fest.

Dies ist eine überladene Funktion.

void QPainter::setRenderHint(QPainter::RenderHint hint, bool on = true)

Setzt den angegebenen Render hint us für den Painter, wenn „ on “ wahr ist; andernfalls wird der Render us gelöscht.

Siehe auch setRenderHints(), renderHints() und Rendering Quality.

void QPainter::setRenderHints(QPainter::RenderHints hints, bool on = true)

Setzt die angegebenen Render hints en für den Painter, wenn „ on “ auf „true“ gesetzt ist; andernfalls werden die Render en gelöscht.

Siehe auch ` setRenderHint()`, ` renderHints()` und ` Rendering Quality`.

void QPainter::setTransform(const QTransform &transform, bool combine = false)

Legt die Welttransformationsmatrix fest. Ist „ combine “ auf „true“ gesetzt, 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 Ansichts-Transformationen, wenn „ enable “ auf „true“ gesetzt ist, oder deaktiviert sie, wenn „ enable “ auf „false“ gesetzt ist.

Siehe auch „ viewTransformEnabled()“ und „Fenster-Viewport-Konvertierung“.

void QPainter::setViewport(const QRect &rectangle)

Setzt das Viewport-Rechteck des Painters auf das angegebene „ rectangle “ und aktiviert Ansichtstransformationen.

Das Ansichtsfenster-Rechteck ist Teil der Ansichtstransformation. Das Ansichtsfenster definiert das Gerätekordinatensystem. Sein Gegenstück, die „ window()“, definiert das logische Koordinatensystem.

Das Standard-Ansichtsbereichsrechteck entspricht dem Rechteck des Geräts.

Siehe auch „ viewport()“, „ viewTransformEnabled()“ und „Fenster-Viewport-Konvertierung“.

void QPainter::setViewport(int x, int y, int width, int height)

Legt das Ansichtsfenster des Painters auf das Rechteck fest, das bei den Koordinaten (x, y) beginnt und die angegebenen Werte für „ width “ und „ height “ aufweist.

Dies ist eine überladene Funktion.

void QPainter::setWindow(const QRect &rectangle)

Setzt das Malerfenster auf das angegebene Fenster „ rectangle “ und aktiviert Ansichtstransformationen.

Das Fensterrechteck ist Teil der Ansichts-Transformation. Das Fenster definiert das logische Koordinatensystem. Sein Gegenstück, das „ viewport()“, definiert das Gerätekordinatensystem.

Das Standard-Fensterrechteck entspricht dem Rechteck des Geräts.

Siehe auch „ window()“, „ viewTransformEnabled()“ und „Umwandlung von Fenster zu Ansichtsbereich“.

void QPainter::setWindow(int x, int y, int width, int height)

Setzt das Fenster des Painters auf das Rechteck, das bei (x, y) beginnt, sowie auf die angegebenen Werte für „ width “ und „ height “.

Dies ist eine überladene Funktion.

void QPainter::setWorldMatrixEnabled(bool enable)

Aktiviert Transformationen, wenn „ enable “ auf „true“ gesetzt ist, oder deaktiviert sie, wenn „ enable “ auf „false“ gesetzt ist. Die Welt-Transformationsmatrix wird nicht verändert.

Siehe auch worldMatrixEnabled(), worldTransform() und Coordinate Transformations.

void QPainter::setWorldTransform(const QTransform &matrix, bool combine = false)

Legt die Welttransformationsmatrix fest. Wenn „ combine “ auf „true“ gesetzt 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 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 den angegebenen Wert „ offset “; d. h., der angegebene Wert „ offset “ wird zu den Punkten addiert.

Siehe auch setWorldTransform() und Coordinate Transformations.

void QPainter::translate(const QPoint &offset)

Verschiebt das Koordinatensystem um den angegebenen Wert ` offset`.

Dies ist eine überladene Funktion.

void QPainter::translate(qreal dx, qreal dy)

Verschiebt das Koordinatensystem um den Vektor (dx, dy).

Dies ist eine überladene Funktion.

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 Viewport-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()`.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.