Sur cette page

QPainter Class

La classe `QPainter` effectue des opérations de dessin de bas niveau sur les widgets et autres périphériques de dessin. En savoir plus...

En-tête : #include <QPainter>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui
Hérité par :

QStylePainter

Remarque : toutes les fonctions de cette classe sont réentrantes.

Types publics

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

Fonctions publiques

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 width, int height, int startAngle, int spanAngle)
void drawChord(const QRectF&rectangle, int startAngle, int spanAngle)
void drawChord(const QRect&rectangle, int angleDeDépart, int angleDePivot)
void drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
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&centre, int rx, int ry)
void drawEllipse(const QPointF&centre, qreal rx, qreal ry)
void drawEllipse(int x, int y, int width, int height)
void drawGlyphRun(const QPointF&position, const QGlyphRun&glyphs)
void drawImage(const QRectF&cible, 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&ligne)
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>&lignes)
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&image)
void drawPie(const QRectF&rectangle, int startAngle, int spanAngle)
void drawPie(const QRect&rectangle, int startAngle, int spanAngle)
void drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawPixmap(const QRectF&target, const QPixmap&pixmap, const QRectF&source)
void drawPixmap(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 width, int height, 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 width, int height)
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&positionDeDépart, const QStaticText&texteStatique)
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 width, int height)
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 width, int height, Qt::BrushStyle style)
void fillRect(int x, int y, int largeur, int hauteur, Qt::GlobalColor couleur)
void fillRect(int x, int y, int largeur, int hauteur, const QBrush&pinceau)
void fillRect(int x, int y, int largeur, int hauteur, const QColor&couleur)
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 angle)
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 couleur)
void setBrush(Qt::BrushStyle style)
(since 6.9) void setBrush(Qt::GlobalColor couleur)
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 direction)
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 width, int height)
void setWindow(const QRect&rectangle)
void setWindow(int x, int y, int largeur, int hauteur)
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

Description détaillée

QPainter fournit des fonctions hautement optimisées permettant d'effectuer la plupart des opérations de dessin requises par les programmes d'interface graphique. Il peut dessiner tout type d'élément, des simples lignes aux formes complexes telles que des secteurs circulaires et des cordes. Il peut également dessiner du texte aligné et des images bitmap. En règle générale, il dessine dans un système de coordonnées « naturel », mais il peut également effectuer des transformations de vue et de monde. QPainter peut agir sur tout objet héritant de la classe ` QPaintDevice `.

QPainter est généralement utilisé dans l'événement « paint » d'un widget : créez et personnalisez (par exemple, en définissant le stylo ou le pinceau) le peintre. Puis effectuez le dessin. N'oubliez pas de détruire l'objet QPainter après le dessin. Par exemple :

void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setPen(Qt::blue);
    painter.setFont(QFont("Arial", 30));
    painter.drawText(rect(), Qt::AlignCenter, "Qt");
}

La fonctionnalité principale de QPainter est le dessin, mais la classe fournit également plusieurs fonctions permettant de personnaliser les paramètres de QPainter et sa qualité de rendu, ainsi que d’autres fonctions permettant le découpage. De plus, vous pouvez contrôler la manière dont les différentes formes sont fusionnées en spécifiant le mode de composition du peintre.

La fonction ` isActive()` indique si le peintre est actif. Un peintre est activé par la fonction ` begin()` et par le constructeur qui prend un argument ` QPaintDevice `. La fonction ` end()` et le destructeur le désactivent.

Avec les classes ` QPaintDevice ` et ` QPaintEngine `, `QPainter` constitue la base du système de dessin de Qt. `QPainter` est la classe utilisée pour effectuer des opérations de dessin. ` QPaintDevice ` représente un périphérique sur lequel il est possible de dessiner à l’aide d’un `QPainter`. ` QPaintEngine ` fournit l’interface que le peintre utilise pour dessiner sur différents types de périphériques. Si le peintre est actif, la fonction device() renvoie le périphérique de dessin sur lequel il dessine, et la fonction paintEngine() renvoie le moteur de dessin sur lequel il opère actuellement. Pour plus d’informations, consultez la section Système de dessin.

Il est parfois souhaitable de faire en sorte qu'un autre élément dessine sur un « QPaintDevice » inhabituel. QPainter prend en charge une fonction statique permettant d'effectuer cette opération : setRedirected().

Avertissement : lorsque le périphérique de dessin est un widget, QPainter ne peut être utilisé qu’à l’intérieur d’une fonction paintEvent() ou d’une fonction appelée par paintEvent().

Paramètres

Il existe plusieurs paramètres que vous pouvez personnaliser pour que QPainter dessine selon vos préférences :

  • font() correspond à la police utilisée pour le dessin de texte. Si l’ isActive du peintre () est disponible, vous pouvez récupérer des informations sur la police actuellement définie et ses métriques à l’aide des fonctions fontInfo() et fontMetrics() respectivement.
  • brush() définit la couleur ou le motif utilisé pour remplir les formes.
  • pen() définit la couleur ou le pointillé utilisé pour dessiner les lignes ou les contours.
  • backgroundMode() indique s’il y a ou non un « background » (), c’est-à-dire s’il s’agit soit de « Qt::OpaqueMode », soit de « Qt::TransparentMode ».
  • background() ne s’applique que lorsque backgroundMode() est défini sur Qt::OpaqueMode et que pen() est un motif de pointillés. Dans ce cas, il décrit la couleur des pixels d’arrière-plan dans le motif de pointillés.
  • brushOrigin() définit l’origine des pinceaux en mosaïque, généralement l’origine de l’arrière-plan du widget.
  • viewport(), window(), worldTransform() constituent le système de transformation des coordonnées du peintre. Pour plus d’informations, consultez la section Coordinate Transformations et la documentation sur le système de coordonnées.
  • hasClipping() indique si le peintre effectue un découpage. (Le périphérique de peinture effectue également un découpage.) Si le peintre effectue un découpage, il le fait par rapport à clipRegion().
  • layoutDirection() définit le sens de mise en page utilisé par le peintre lors du tracé de texte.
  • worldMatrixEnabled() indique si la transformation du monde est activée.
  • viewTransformEnabled() indique si la transformation de vue est activée.

Notez que certains de ces paramètres reflètent ceux de certains périphériques de dessin, par exemple QWidget::font(). La fonction QPainter::begin() (ou, de manière équivalente, le constructeur de QPainter) copie ces attributs depuis le périphérique de dessin.

Vous pouvez à tout moment enregistrer l’état du QPainter en appelant la fonction ` save()`, qui enregistre tous les paramètres disponibles dans une pile interne. La fonction ` restore()` les récupère ensuite.

Dessin

QPainter fournit des fonctions permettant de dessiner la plupart des primitives : drawPoint(), drawPoints(), drawLine(), drawRect(), drawRoundedRect(), drawEllipse(), drawArc(), drawPie(), drawChord(), drawPolyline(), drawPolygon(), drawConvexPolygon() et drawCubicBezier(). Les deux fonctions de commodité, drawRects() et drawLines(), dessinent le nombre donné de rectangles ou de lignes dans le tableau donné de QRects ou QLines à l’aide du stylo et du pinceau actuels.

La classe QPainter fournit également la fonction ` fillRect()` qui remplit la zone ` QRect` avec la couleur ` QBrush`, ainsi que la fonction ` eraseRect()` qui efface la zone située à l'intérieur du rectangle donné.

Toutes ces fonctions existent en versions à nombre entier et à virgule flottante.

Application de dessin de base avec des options de formes et de stylosExemple de dessin de base

L'exemple « Dessin de base » montre comment afficher des primitives graphiques de base dans divers styles à l'aide de la classe `QPainter`.

Si vous devez dessiner une forme complexe, en particulier si vous devez le faire de manière répétée, pensez à créer un « QPainterPath » et à le dessiner à l’aide de ` drawPath()`.

Exemple « Painter Paths »

La classe « QPainterPath » fournit un conteneur pour les opérations de dessin, permettant de construire et de réutiliser des formes graphiques.

L'exemple « Painter Paths » montre comment les « painter paths » peuvent être utilisés pour créer des formes complexes en vue de leur rendu.

Application « Painter Paths » avec différentes formes

QPainter fournit également la fonction ` fillPath()` qui remplit l'QPainterPath donné avec l'QBrush donné, ainsi que la fonction ` strokePath()` qui dessine le contour du chemin donné (c'est-à-dire qui trace le chemin).

Voir également l’exemple « Déformation vectorielle » qui montre comment utiliser des techniques vectorielles avancées pour dessiner du texte à l’aide d’un « QPainterPath », l’exemple « Dégradés » qui présente les différents types de dégradés disponibles dans Qt, et l’exemple « Traçage de chemin » qui présente les motifs de tirets intégrés à Qt et explique comment utiliser des motifs personnalisés pour élargir la gamme de motifs disponibles.

Le dessin de texte s’effectue à l’aide de la fonction ` drawText()`. Lorsque vous avez besoin d’un positionnement précis, la fonction ` boundingRect()` vous indique où une commande ` drawText()` donnée va dessiner.

Tracé de pixmaps et d’images

Il existe des fonctions permettant de dessiner des pixmaps/images, à savoir drawPixmap(), drawImage() et drawTiledPixmap(). Les fonctions drawPixmap() et drawImage() produisent le même résultat, à l’exception du fait que drawPixmap() est plus rapide à l’écran tandis que drawImage() peut s’avérer plus rapide sur un QPrinter ou d’autres périphériques.

Il existe une fonction drawPicture() qui dessine le contenu d'un QPicture dans son intégralité. La fonction drawPicture() est la seule à ignorer tous les paramètres du peintre, car QPicture dispose de ses propres paramètres.

Affichage de versions haute résolution de pixmaps et d’images

Les versions haute résolution des pixmaps ont un rapport de pixels de l'appareil supérieur à 1 (voir QImageReader, QPixmap::devicePixelRatio()). Si ce rapport correspond à celui de l'QPaintDevice sous-jacente, l'image est dessinée directement sur l'appareil sans transformation supplémentaire.

C’est par exemple le cas lors de l’affichage d’une QPixmap de 64x64 pixels avec un rapport de pixels de l’appareil égal à 2 sur un écran à haute résolution (DPI) qui présente également un rapport de pixels de l’appareil égal à 2. Notez que la pixmap mesure alors effectivement 32×32 pixels dans l’espace utilisateur. Les chemins de code dans Qt qui calculent la géométrie de mise en page en fonction de la taille de la pixmap utiliseront cette taille. Il en résulte que la pixmap s’affiche comme une pixmap haute résolution plutôt que comme une grande pixmap.

Qualité de rendu

Pour obtenir un résultat de rendu optimal avec QPainter, vous devez utiliser le périphérique de peinture indépendant de la plateforme « QImage » ; en d’autres termes, l’utilisation de ` QImage ` garantira que le résultat présente une représentation en pixels identique sur toutes les plateformes.

La classe `QPainter` permet également de contrôler la qualité de rendu grâce à son énumération ` RenderHint ` et à la prise en charge de la précision en virgule flottante : toutes les fonctions de dessin de primitives disposent de versions en virgule flottante.

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

Elles sont souvent utilisées en association avec l'indication de rendu « QPainter::Antialiasing ».

QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
Comparaison de cercles concentriques avec des entiers (int) et des nombres à virgule flottante (float), avec ou sans lissage. L'utilisation des versions à précision en virgule flottante produit des anneaux régulièrement espacés. Le lissage permet d'obtenir des cercles lisses.Cercles concentriques comparant l'effet d'aliasing et l'anticrénelage

L’énumération ` RenderHint ` spécifie des indicateurs à `QPainter` qui peuvent être respectés ou non par un moteur donné. ` QPainter::Antialiasing ` indique que le moteur doit appliquer un anticrénelage aux bords des primitives si possible, ` QPainter::TextAntialiasing ` indique que le moteur doit appliquer un anticrénelage au texte si possible, et ` QPainter::SmoothPixmapTransform ` indique que le moteur doit utiliser un algorithme de transformation de pixmap lisse.

La fonction renderHints() renvoie un indicateur qui spécifie les conseils de rendu définis pour ce peintre. Utilisez la fonction setRenderHint() pour définir ou effacer l’option RenderHints actuellement activée.

Transformations de coordonnées

Normalement, le QPainter opère dans le système de coordonnées propre au périphérique (généralement en pixels), mais QPainter prend bien en charge les transformations de coordonnées.

Les transformations les plus couramment utilisées sont la mise à l'échelle, la rotation, la translation et le cisaillement. Utilisez la fonction scale() pour mettre à l'échelle le système de coordonnées d'un décalage donné, la fonction rotate() pour le faire pivoter dans le sens des aiguilles d'une montre et la fonction translate() pour le translater (c'est-à-dire ajouter un décalage donné aux points). Vous pouvez également tordre le système de coordonnées autour de l’origine à l’aide de la fonction shear(). Consultez l’exemple « Transformations affines » pour visualiser un système de coordonnées cisaillé.

Consultez également l’exemple « Transformations » qui montre comment les transformations influencent la manière dont QPainter rend les primitives graphiques. Il montre notamment comment l’ordre des transformations affecte le résultat.

Exemple de transformations affines

L'exemple « Transformations affines » illustre la capacité de Qt à effectuer des transformations affines sur les opérations de dessin. La démo permet également à l'utilisateur d'expérimenter les opérations de transformation et d'en voir immédiatement les résultats.

Exemple de transformations affines avec un dessin de pingouin

Toutes les opérations de transformation s'appliquent à l'worldTransform e de transformation (). Une matrice transforme un point du plan en un autre point. Pour plus d'informations sur la matrice de transformation, consultez la documentation relative au système de coordonnées et à l'QTransform.

La fonction ` setWorldTransform()` peut remplacer ou compléter la matrice de transformation actuellement définie ` worldTransform()`. La fonction ` resetTransform()` réinitialise toutes les transformations effectuées à l’aide des fonctions ` translate()`, ` scale()`, ` shear()`, ` rotate()`, ` setWorldTransform()`, ` setViewport()` et ` setWindow()`. La fonction ` deviceTransform()` renvoie la matrice qui effectue la transformation des coordonnées logiques en coordonnées du périphérique de dessin propre à la plate-forme. Cette dernière fonction n’est nécessaire que lorsque l’on utilise des commandes de dessin propres à la plateforme sur le descripteur dépendant de la plateforme, et que la plateforme n’effectue pas de transformations en natif.

Lorsqu’on dessine avec QPainter, on spécifie des points à l’aide de coordonnées logiques qui sont ensuite converties en coordonnées physiques du périphérique de dessin. Le mappage des coordonnées logiques vers les coordonnées physiques est géré par la fonction ` combinedTransform()` de QPainter, qui combine les fonctions ` viewport()`, ` window()` et ` worldTransform()`. La fonction ` viewport()` représente les coordonnées physiques d'un rectangle arbitraire, la fonction ` window()` décrit ce même rectangle en coordonnées logiques, et la fonction ` worldTransform()` est identique à la matrice de transformation.

Voir aussi Système de coordonnées

Découpage

QPainter peut limiter toute opération de dessin à un rectangle, une région ou un tracé vectoriel. Le découpage actuel est accessible via les fonctions clipRegion() et clipPath(). Le choix entre les chemins et les régions (le plus rapide) dépend de l'paintEngine() sous-jacente. Par exemple, le moteur de dessin QImage privilégie les chemins, tandis que le moteur de dessin X11 privilégie les régions. La définition d'un découpage s'effectue dans les coordonnées logiques du peintre.

Après le découpage effectué par `QPainter`, le périphérique de dessin peut également procéder à un découpage. Par exemple, la plupart des widgets découpent les pixels utilisés par les widgets enfants, et la plupart des imprimantes découpent une zone près des bords du papier. Ce découpage supplémentaire n’est pas pris en compte par la valeur de retour de ` clipRegion()` ou ` hasClipping()`.

Modes de composition

QPainter fournit l'énumération CompositionMode qui définit les règles de Porter-Duff pour la composition d'images numériques ; elle décrit un modèle permettant de combiner les pixels d'une image, dite « source », avec ceux d'une autre image, dite « destination ».

Les deux formes de composition les plus courantes sont « Source » et « SourceOver ». « Source » est utilisé pour dessiner des objets opaques sur un périphérique de dessin. Dans ce mode, chaque pixel de la source remplace le pixel correspondant de la destination. Dans le mode de composition « SourceOver », l’objet source est transparent et est dessiné par-dessus la destination.

Notez que la transformation de composition s’effectue pixel par pixel. C’est pourquoi il existe une différence entre l’utilisation de la primitive graphique elle-même et celle de son rectangle de délimitation : ce dernier contient des pixels pour lesquels alpha == 0 (c’est-à-dire les pixels entourant la primitive). Ces pixels écraseront ceux de l’autre image, les effaçant ainsi, tandis que la primitive n’écrase que sa propre zone.

Exemple de modes de composition avec des images fusionnéesExemple de modes de composition

L'exemple « Composition Modes », disponible dans le répertoire des exemples de Qt, vous permet d'expérimenter les différents modes de composition et d'en voir immédiatement les résultats.

Limitations

Si vous utilisez des coordonnées avec le moteur de dessin raster de Qt, il est important de noter que, bien que des coordonnées supérieures à +/-215 puissent être utilisées, l'affichage des dessins effectués avec des coordonnées situées en dehors de cette plage n'est pas garanti ; le dessin peut être tronqué. Cela est dû à l'utilisation de la fonction « short int » dans l'implémentation.

Les contours générés par le « stroker » de Qt ne constituent qu'une approximation lorsqu'il s'agit de formes courbes. Il est dans la plupart des cas impossible de représenter le contour d'un segment de courbe de Bézier à l'aide d'un autre segment de courbe de Bézier ; Qt approxime donc les contours des courbes en utilisant plusieurs courbes plus petites. Pour des raisons de performances, le nombre de courbes utilisées par Qt pour ces contours est limité ; par conséquent, l’erreur de tracé augmente lorsque l’on utilise des largeurs de trait ou des échelles importantes. Pour générer des contours présentant des erreurs plus faibles, il est possible d’utiliser la classe ` QPainterPathStroker `, qui dispose de la fonction membre `setCurveThreshold` permettant à l’utilisateur de spécifier la tolérance d’erreur. Une autre solution consiste à convertir d’abord les chemins en polygones, puis à dessiner ces derniers à la place.

De même, Qt approxime les arcs et les ellipses à l’aide de courbes de Bézier cubiques au lieu de les calculer par des méthodes trigonométriques ; les points situés sur un arc s’écartent donc légèrement de leurs positions réelles. Dans le même ordre d’idées, les angles pris par les fonctions ` drawArc()`, ` drawPie()` et ` drawChord()` sont des angles excentriques : ils mesurent la direction à partir du centre du rectangle englobant uniquement lorsque ce rectangle est un carré. Voir Arcs and Ellipses pour plus de détails sur ces deux points.

Performances

QPainter est un framework complet qui permet aux développeurs d’effectuer une grande variété d’opérations graphiques, telles que les dégradés, les modes de composition et les graphiques vectoriels. De plus, QPainter peut fonctionner sur une grande variété de configurations matérielles et logicielles. Naturellement, la combinaison sous-jacente de matériel et de logiciel a des implications sur les performances, et garantir que chaque opération soit rapide, en tenant compte de toutes les combinaisons possibles de modes de composition, de pinceaux, de découpage, de transformation, etc., est une tâche quasi impossible en raison du nombre de permutations. À titre de compromis, nous avons sélectionné un sous-ensemble de l’API et des backends de QPainter, pour lequel les performances sont garanties d’être aussi bonnes que possible compte tenu de la combinaison donnée de matériel et de logiciel.

Les backends sur lesquels nous nous concentrons en tant que moteurs hautement performants sont les suivants :

  • Raster — Ce backend implémente tout le rendu de manière purement logicielle et est toujours utilisé pour le rendu dans des QImages. Pour des performances optimales, utilisez uniquement les types de format suivants : QImage::Format_ARGB32_Premultiplied, QImage::Format_RGB32 ou QImage::Format_RGB16. Tout autre format, y compris QImage::Format_ARGB32, présente des performances nettement inférieures. Ce moteur est utilisé par défaut pour QWidget et QPixmap.
  • OpenGL 2.0 (ES) - Ce backend est le principal backend pour les graphismes accélérés par le matériel. Il peut être exécuté sur des ordinateurs de bureau et des appareils embarqués prenant en charge la spécification OpenGL 2.0 ou OpenGL/ES 2.0. Cela inclut la plupart des puces graphiques produites au cours des deux dernières années. Le moteur peut être activé en utilisant QPainter sur un QOpenGLWidget.

Ces opérations sont les suivantes :

  • Des transformations simples, c'est-à-dire des translations et des mises à l'échelle, ainsi que des rotations de 0, 90, 180 et 270 degrés.
  • drawPixmap() en combinaison avec des transformations simples et l'opacité, en mode de transformation non lisse (QPainter::SmoothPixmapTransform non activé comme indication de rendu).
  • Remplissages rectangulaires avec une couleur unie, des dégradés linéaires bicolores et des transformations simples.
  • Découpage rectangulaire avec des transformations simples et un découpage par intersection.
  • Modes de composition : « QPainter::CompositionMode_Source » et « QPainter::CompositionMode_SourceOver ».
  • Remplissage de rectangles arrondis à l’aide de couleurs unies et de dégradés linéaires bicolores.
  • Pixmaps 3x3 patchés, via qDrawBorderPixmap.

Cette liste donne une indication des fonctionnalités pouvant être utilisées en toute sécurité dans une application où les performances sont essentielles. Dans certaines configurations, d’autres opérations peuvent également s’avérer rapides, mais avant de les utiliser de manière intensive, il est recommandé de les tester et de les vérifier sur le système où le logiciel sera finalement exécuté. Il existe également des cas où l’utilisation d’opérations coûteuses est acceptable, par exemple lorsque le résultat est mis en cache dans un QPixmap.

Voir également QPaintDevice, QPaintEngine, Qt SVG, Exemple de dessin de base et Drawing Utility Functions.

Documentation sur les types de membres

enum QPainter::CompositionMode

Définit les modes pris en charge pour la composition d'images numériques. Les modes de composition permettent de spécifier la manière dont les pixels d'une image (la source) sont fusionnés avec ceux d'une autre image (la destination).

Veuillez noter que les modes d'opération raster bit à bit, désignés par le préfixe RasterOp, ne sont pris en charge en natif que dans les moteurs X11 et de peinture raster. Cela signifie que la seule façon d'utiliser ces modes sur Mac est de passer par un « QImage ». Les modes de fusion désignés par RasterOp ne sont pas pris en charge pour les stylos et les pinceaux comportant des composantes alpha. De plus, l’activation de l’indication de rendu « QPainter::Antialiasing » désactivera de fait les modes RasterOp.

Illustration présentant les modes de composition « Source », « Destination », « SourceOver », « DestinationOver », « SourceIn » et « DestinationIn »

Illustration présentant les modes de composition « SourceOut », « DestinationOut », « SourceAtop », « DestinationAtop », « Clear » et « Xor »

Le type le plus courant est SourceOver (souvent appelé simplement « fusion alpha »), dans lequel le pixel source est fusionné par-dessus le pixel de destination de telle sorte que la composante alpha de la source définit la translucidité du pixel.

Plusieurs modes de composition nécessitent un canal alpha dans les images source ou cible pour produire un effet. Pour des performances optimales, le format d’image Format_ARGB32_Premultiplied est recommandé.

Lorsqu’un mode de composition est défini, il s’applique à tous les opérateurs de dessin, stylos, pinceaux, dégradés et dessins à partir de pixmaps ou d’images.

ConstanteValeurDescription
QPainter::CompositionMode_SourceOver0Il s’agit du mode par défaut. L’alpha de la source est utilisé pour mélanger le pixel par-dessus celui de la destination.
QPainter::CompositionMode_DestinationOver1L'opacité de la destination est utilisée pour l'incruster par-dessus les pixels de la source. Ce mode est l'inverse de CompositionMode_SourceOver.
QPainter::CompositionMode_Clear2Les pixels de la destination sont effacés (rendus entièrement transparents) indépendamment de la source.
QPainter::CompositionMode_Source3Le résultat est le pixel de la source. (Cela correspond à une opération de copie simple et est identique à SourceOver lorsque le pixel de la source est opaque).
QPainter::CompositionMode_Destination4Le résultat est le pixel de la destination. Cela signifie que la fusion n’a aucun effet. Ce mode est l’inverse de CompositionMode_Source.
QPainter::CompositionMode_SourceIn5Le résultat est la source, dont l’opacité est réduite de celle de la destination.
QPainter::CompositionMode_DestinationIn6Le résultat est la destination, dont l’alpha est réduit de celui de la source. Ce mode est l’inverse de CompositionMode_SourceIn.
QPainter::CompositionMode_SourceOut7Le résultat est la source, dont l'alpha est réduit de l'inverse de celui de la destination.
QPainter::CompositionMode_DestinationOut8Le résultat est le pixel de destination, dont la transparence est réduite de l’inverse de celle du pixel source. Ce mode est l’inverse de CompositionMode_SourceOut.
QPainter::CompositionMode_SourceAtop9Le pixel source est superposé à la destination, l’opacité du pixel source étant réduite de l’opacité du pixel de destination.
QPainter::CompositionMode_DestinationAtop10Le pixel de destination est superposé à la source, l’opacité du pixel de destination étant réduite de l’opacité de la source. Ce mode est l’inverse de CompositionMode_SourceAtop.
QPainter::CompositionMode_Xor11La source, dont la transparence est réduite de l’inverse de la transparence de la destination, est fusionnée avec la destination, dont la transparence est réduite de l’inverse de la transparence de la source. CompositionMode_Xor n’est pas identique à l’opération XOR bit à bit.
QPainter::CompositionMode_Plus12L’alpha et la couleur des pixels source et de destination sont additionnés.
QPainter::CompositionMode_Multiply13Le résultat est la couleur de la source multipliée par celle de la destination. Multiplier une couleur par du blanc laisse la couleur inchangée, tandis que multiplier une couleur par du noir produit du noir.
QPainter::CompositionMode_Screen14Les couleurs de la source et de la destination sont inversées, puis multipliées. La superposition d'une couleur avec du blanc produit du blanc, tandis que la superposition d'une couleur avec du noir laisse la couleur inchangée.
QPainter::CompositionMode_Overlay15Multiplie ou effectue une trame sur les couleurs en fonction de la couleur de destination. La couleur de destination est mélangée à la couleur source pour refléter la clarté ou l’obscurité de la destination.
QPainter::CompositionMode_Darken16La plus foncée des couleurs source et de destination est sélectionnée.
QPainter::CompositionMode_Lighten17La plus claire des couleurs source et de destination est sélectionnée.
QPainter::CompositionMode_ColorDodge18La couleur de destination est éclaircie pour refléter la couleur source. Une couleur source noire laisse la couleur de destination inchangée.
QPainter::CompositionMode_ColorBurn19La couleur de destination est assombrie pour refléter la couleur source. Une couleur source blanche laisse la couleur de destination inchangée.
QPainter::CompositionMode_HardLight20Multiplie ou effectue une trame sur les couleurs en fonction de la couleur source. Une couleur source claire éclaircira la couleur de destination, tandis qu’une couleur source foncée l’assombrira.
QPainter::CompositionMode_SoftLight21Assombrit ou éclaircit les couleurs en fonction de la couleur source. Similaire à CompositionMode_HardLight.
QPainter::CompositionMode_Difference22Soustrait la couleur la plus foncée de la plus claire. Peindre en blanc inverse la couleur de destination, tandis que peindre en noir laisse la couleur de destination inchangée.
QPainter::CompositionMode_Exclusion23Similaire à CompositionMode_Difference, mais avec un contraste plus faible. Peindre en blanc inverse la couleur de destination, tandis que peindre en noir laisse la couleur de destination inchangée.
QPainter::RasterOp_SourceOrDestination24Effectue une opération de OU binaire sur les pixels source et de destination (src OU dst).
QPainter::RasterOp_SourceAndDestination25Effectue une opération de ET binaire sur les pixels source et de destination (src ET dst).
QPainter::RasterOp_SourceXorDestination26Effectue une opération XOR binaire sur les pixels source et de destination (src XOR dst).
QPainter::RasterOp_NotSourceAndNotDestination27Effectue une opération de OU non-inversé (NOR) sur les pixels source et de destination ((NOT src) AND (NOT dst)).
QPainter::RasterOp_NotSourceOrNotDestination28Effectue une opération NAND binaire sur les pixels source et de destination ((NOT src) OR (NOT dst)).
QPainter::RasterOp_NotSourceXorDestination29Effectue une opération binaire dans laquelle les pixels source sont inversés, puis soumis à une opération XOR avec les pixels de destination ((NOT src) XOR dst).
QPainter::RasterOp_NotSource30Effectue une opération bit à bit où les pixels source sont inversés (NOT src).
QPainter::RasterOp_NotSourceAndDestination31Effectue une opération bit à bit où la source est inversée puis combinée par une opération ET avec la destination ((NOT src) AND dst).
QPainter::RasterOp_SourceAndNotDestination32Effectue une opération binaire où la source est combinée par une opération AND avec les pixels de destination inversés (src AND (NOT dst)).
QPainter::RasterOp_NotSourceOrDestination33Effectue une opération bit à bit dans laquelle la source est inversée puis combinée par une opération OU avec la destination ((NOT src) OR dst).
QPainter::RasterOp_ClearDestination35Les pixels de la destination sont effacés (mis à 0) indépendamment de la source.
QPainter::RasterOp_SetDestination36Les pixels de la destination sont activés (mis à 1) indépendamment de la source.
QPainter::RasterOp_NotDestination37Effectue une opération binaire dans laquelle les pixels de la destination sont inversés (NOT dst).
QPainter::RasterOp_SourceOrNotDestination34Effectue une opération bit à bit où la source est combinée par « OU » avec les pixels de destination inversés (src OR (NOT dst)).

Voir également compositionMode(), setCompositionMode(), Composition Modes et Exemple de composition d’images.

enum QPainter::PixmapFragmentHint
flags QPainter::PixmapFragmentHints

ConstanteValeurDescription
QPainter::OpaqueHint0x01Indique que les fragments de pixmap à dessiner sont opaques. Les fragments opaques peuvent être dessinés plus rapidement.

Le type `PixmapFragmentHints` est une définition de type pour `QFlags<PixmapFragmentHint>`. Il stocke une combinaison (ou) de valeurs `PixmapFragmentHint`.

Voir également QPainter::drawPixmapFragments() et QPainter::PixmapFragment.

enum QPainter::RenderHint
flags QPainter::RenderHints

Les « renderhints » servent à spécifier des indicateurs à l'QPainter, qui peuvent être pris en compte ou non par un moteur donné.

ConstanteValeurDescription
QPainter::Antialiasing0x01Indique que le moteur doit appliquer un anticrénelage aux arêtes des primitives si possible.
QPainter::TextAntialiasing0x02Indique que le moteur doit appliquer un anticrénelage au texte si possible. Pour désactiver de force l'anticrénelage du texte, n'utilisez pas cette instruction. Définissez plutôt l'QFont::NoAntialias e de la stratégie de style de votre police.
QPainter::SmoothPixmapTransform0x04Indique que le moteur doit utiliser un algorithme de transformation de pixmap lisse (tel que bilinéaire) plutôt que la méthode du plus proche voisin.
QPainter::VerticalSubpixelPositioning0x08Permet de positionner le texte à des fractions de pixels aussi bien verticalement qu’horizontalement, si cela est pris en charge par le moteur de polices. Cette fonctionnalité est actuellement prise en charge par Freetype sur toutes les plateformes lorsque la préférence de hinting est définie sur « QFont::PreferNoHinting », ainsi que sur macOS. Dans la plupart des cas d’utilisation, cela n’améliorera pas la qualité visuelle, mais pourra augmenter la consommation de mémoire et entraîner une légère baisse des performances de rendu du texte. Par conséquent, il n'est pas recommandé d'activer cette option, sauf si le cas d'utilisation l'exige. Un tel cas d'utilisation pourrait être l'alignement de glyphes avec d'autres primitives visuelles. Cette valeur a été ajoutée dans Qt 6.1.
QPainter::LosslessImageRendering0x40Utilisez un rendu d’image sans perte, dans la mesure du possible. Actuellement, cette option n’est utilisée que lorsque l’option « QPainter » est employée pour générer un fichier PDF via QPrinter ou QPdfWriter, où les appels drawImage()/drawPixmap() encoderont les images à l’aide d’un algorithme de compression sans perte au lieu de la compression JPEG avec perte. Cette valeur a été ajoutée dans Qt 5.13.
QPainter::NonCosmeticBrushPatterns0x80Lors du tracé avec un pinceau utilisant l'un des styles de motif prédéfinis, transformer également le motif en même temps que l'objet en cours de tracé. Par défaut, le motif est considéré comme purement esthétique, de sorte que ses pixels sont directement mappés aux pixels du périphérique, indépendamment de toute transformation active. Cette valeur a été ajoutée dans Qt 6.4.

Le type `RenderHints` est un `typedef` pour ` QFlags<RenderHint>`. Il stocke une combinaison (ou) de valeurs `RenderHint`.

Voir également renderHints(), setRenderHint() et Rendering Quality.

Documentation des fonctions membres

QPainter::QPainter()

Crée un « painter ».

Voir également begin() et end().

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

Crée un « painter » qui commence immédiatement à peindre l'device.

Ce constructeur est pratique pour les peintres à courte durée de vie, par exemple dans une fonction ` QWidget::paintEvent()`, et ne doit être utilisé qu'une seule fois. Le constructeur appelle ` begin()` à votre place et le destructeur de `QPainter` appelle automatiquement ` end()`.

Voici un exemple utilisant begin() et end() :

void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter p;
    p.begin(this);
    p.drawLine(drawingCode);        // drawing code
    p.end();
}

Le même exemple utilisant ce constructeur :

void MyWidget::paintEvent(QPaintEvent *)
{
    QPainter p(this);
    p.drawLine(drawingCode);        // drawing code
}

Étant donné que le constructeur ne peut pas fournir de retour d'information en cas d'échec de l'initialisation du peintre, il est préférable d'utiliser begin() et end() pour dessiner sur des périphériques externes, par exemple des imprimantes.

Voir également begin() et end().

[noexcept] QPainter::~QPainter()

Il anéantit le peintre.

const QBrush &QPainter::background() const

Renvoie le pinceau d'arrière-plan actuel.

Voir également setBackground() et Settings.

Qt::BGMode QPainter::backgroundMode() const

Renvoie le mode d'arrière-plan actuel.

Voir également setBackgroundMode() et Settings.

bool QPainter::begin(QPaintDevice *device)

Lance l'opération de peinture « device » et renvoie « true » en cas de réussite ; sinon, renvoie « false ».

Notez que tous les paramètres du peintre (setPen(), setBrush() etc.) sont réinitialisés à leurs valeurs par défaut lorsque la fonction begin() est appelée.

Les erreurs pouvant survenir constituent des problèmes graves, tels que ceux-ci :

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

Notez que, la plupart du temps, vous pouvez utiliser l’un des constructeurs à la place de `begin()`, et que ` end()` est automatiquement exécutée lors de la destruction.

Avertissement : un périphérique de dessin ne peut être dessiné que par un seul « peintre » à la fois.

Avertissement : le dessin sur un périphérique de dessin ( QImage ) au format QImage::Format_Indexed8 n’est pas pris en charge.

Voir également ` end()` et ` QPainter()`.

void QPainter::beginNativePainting()

Vide le pipeline de rendu et prépare le système à l’exécution de commandes directement adressées par l’utilisateur au contexte graphique sous-jacent. Doit être suivi d’un appel à la fonction ` endNativePainting()`.

Notez que seuls les états modifiés par le moteur de dessin sous-jacent seront réinitialisés à leurs états par défaut respectifs. Les états réinitialisés peuvent varier d'une version à l'autre. Les états suivants sont actuellement réinitialisés dans le moteur OpenGL 2 :

  • le mélange est désactivé
  • les tests de profondeur, de stencil et de ciseaux sont désactivés
  • l'unité de texture active est réinitialisée à 0
  • le masque de profondeur, la fonction de profondeur et la profondeur de nettoyage sont réinitialisés à leurs valeurs par défaut
  • le masque de stencil, l'opération de stencil et la fonction de stencil sont réinitialisés à leurs valeurs par défaut
  • la couleur actuelle est réinitialisée en blanc uni

Si, par exemple, le mode polygone OpenGL est modifié par l’utilisateur à l’intérieur d’un bloc `beginNativePaint()`/`endNativePainting()`, il ne sera pas réinitialisé à son état par défaut par ` endNativePainting()`. Voici un exemple illustrant l’intermêlement de commandes de peinture et de commandes OpenGL brutes :

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();

Voir également endNativePainting().

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

Renvoie le rectangle englobant de l’ text, tel qu’il apparaîtra lorsqu’il sera dessiné à l’intérieur de l’ rectangle donné, avec l’ flags spécifié, en utilisant l’ font() actuellement défini ; en d’autres termes, cette fonction indique où la fonction drawText() dessinera si on lui fournit les mêmes arguments.

Si l’ text ne tient pas dans l’ rectangle donné en utilisant l’ flags spécifié, la fonction renvoie le rectangle requis.

L’argument ` flags ` est un OU binaire des indicateurs suivants :

Si plusieurs indicateurs d’alignement horizontal ou plusieurs indicateurs d’alignement vertical sont activés, l’alignement résultant n’est pas défini.

Voir également drawText(), Qt::Alignment et Qt::TextFlag.

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

Renvoie le rectangle englobant de l’ text, tel qu’il apparaîtra lorsqu’il sera dessiné à l’intérieur de l’ rectangle donnée, avec l’ flags spécifiée, en utilisant le font() actuellement défini.

Il s'agit d'une fonction surchargée.

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

Au lieu de spécifier les indicateurs sous la forme d'un OU binaire entre les valeurs « Qt::AlignmentFlag » et « Qt::TextFlag », cette fonction surchargée prend un argument de type « option ». La classe « QTextOption » fournit une description des propriétés générales du texte enrichi.

Il s'agit d'une fonction surchargée.

Voir également QTextOption.

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

Renvoie le rectangle englobant de l'text donné, tel qu'il apparaîtra lorsqu'il sera dessiné à l'intérieur du rectangle dont les coordonnées de départ sont (x, y), avec une largeur de w et une hauteur de h.

Il s'agit d'une fonction surchargée.

const QBrush &QPainter::brush() const

Renvoie le pinceau actuellement utilisé par le peintre.

Voir également QPainter::setBrush() et Settings.

QPoint QPainter::brushOrigin() const

Renvoie l'origine actuelle du pinceau. Il est préférable d'utiliser QPainter::brushOriginF() pour obtenir l'origine exacte.

Voir également setBrushOrigin() et Settings.

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

Renvoie l'origine actuelle du pinceau.

Cette fonction a été introduite dans Qt 6.11.

Voir également setBrushOrigin() et Settings.

QRectF QPainter::clipBoundingRect() const

Renvoie le rectangle englobant du clip actuel s'il existe un clip ; sinon, renvoie un rectangle vide. Notez que la région du clip est exprimée en coordonnées logiques.

Il n'est pas garanti que le rectangle de délimitation soit serré.

Voir également setClipRect(), setClipPath() et setClipRegion().

QPainterPath QPainter::clipPath() const

Renvoie le tracé de découpe actuel en coordonnées logiques.

Avertissement : la fonction ` QPainter ` ne stocke pas explicitement le découpage combiné, car celui-ci est géré par l'QPaintEngine sous-jacente ; le chemin est donc recréé à la demande et transformé selon le système de coordonnées logiques actuel. Cette opération peut s'avérer coûteuse en ressources.

Voir également setClipPath(), clipRegion() et setClipping().

QRegion QPainter::clipRegion() const

Renvoie la région de clip actuellement définie. Notez que la région de clip est exprimée en coordonnées logiques.

Avertissement : la fonction ` QPainter ` ne stocke pas explicitement le clip combiné, car cette gestion est assurée par l'QPaintEngine sous-jacente ; le chemin est donc recréé à la demande et transformé selon le système de coordonnées logiques actuel. Cette opération peut s'avérer coûteuse en ressources.

Voir également setClipRegion(), clipPath() et setClipping().

QTransform QPainter::combinedTransform() const

Renvoie la matrice de transformation combinant la transformation de la fenêtre/fenêtre d'affichage actuelle et la transformation mondiale.

Voir également setWorldTransform(), setWindow() et setViewport().

QPainter::CompositionMode QPainter::compositionMode() const

Renvoie le mode de composition actuel.

Voir également CompositionMode et setCompositionMode().

QPaintDevice *QPainter::device() const

Renvoie le périphérique de dessin sur lequel ce « painter » est en train de dessiner, ou « nullptr » si le « painter » n'est pas actif.

Voir également isActive().

const QTransform &QPainter::deviceTransform() const

Renvoie la matrice permettant de transformer les coordonnées logiques en coordonnées du périphérique de dessin propre à la plateforme.

Cette fonction n' est nécessaire que lorsque l'on utilise des commandes de dessin spécifiques à la plate-forme sur le descripteur dépendant de la plate-forme (Qt::HANDLE) et que la plate-forme n'effectue pas ces transformations de manière native.

L'énumération QPaintEngine::PaintEngineFeature peut être interrogée pour déterminer si la plateforme effectue ou non les transformations.

Voir également worldTransform() et QPaintEngine::hasFeature().

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

Dessine l'arc défini par les coordonnées données : rectangle, startAngle et spanAngle.

Les paramètres startAngle et spanAngle doivent être spécifiés en 1/16e de degré, c'est-à-dire qu'un cercle complet équivaut à 5 760 (16 * 360). Les valeurs positives des angles correspondent à un sens antihoraire, tandis que les valeurs négatives correspondent à un sens horaire. Zéro degré correspond à la position 3 heures. Si l'rectangle e n'est pas carré, les angles sont des angles excentriques et ne mesurent pas la direction à partir du centre de l' e, comme décrit dans Arcs and Ellipses.

Courbe en arc
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);

Voir également drawPie(), drawChord() et Système de coordonnées.

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

Dessine l'arc défini par les coordonnées données : rectangle, startAngle et spanAngle.

Il s'agit d'une fonction surchargée.

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

Dessine l'arc défini par le rectangle dont les sommets sont (x, y), avec les paramètres spécifiés width et height, ainsi que les valeurs données startAngle et spanAngle.

Il s'agit d'une fonction surchargée.

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

Dessine la corde définie par les paramètres ` rectangle`, ` startAngle ` et ` spanAngle`. La corde est remplie avec la couleur actuelle définie par ` brush()`.

Les paramètres startAngle et spanAngle doivent être spécifiés en 1/16e de degré, c'est-à-dire qu'un cercle complet équivaut à 5 760 (16 * 360). Les valeurs positives des angles correspondent à un sens antihoraire, tandis que les valeurs négatives correspondent à un sens horaire. Zéro degré correspond à la position 3 heures. Si rectangle n’est pas carré, les angles sont des angles excentriques et ne mesurent pas la direction à partir du centre du rectangle, comme décrit dans Arcs and Ellipses.

Forme d'accord
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);

Voir également drawArc(), drawPie() et Système de coordonnées.

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

Dessine la corde définie par les coordonnées données rectangle, startAngle et spanAngle.

Il s'agit d'une fonction surchargée.

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

Dessine la corde définie par le rectangle dont les sommets sont (x, y), avec les paramètres spécifiés width et height, ainsi que les valeurs données startAngle et spanAngle.

Il s'agit d'une fonction surchargée.

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

Dessine le polygone convexe défini par les premiers points de l'pointCount s du tableau points à l'aide du stylo actuel.

Polygone à quatre côtés
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);

Le premier point est implicitement relié au dernier, et le polygone est rempli avec l'brush() actuel. Si le polygone fourni n'est pas convexe, c'est-à-dire s'il contient au moins un angle supérieur à 180 degrés, le résultat est indéfini.

Sur certaines plateformes (par exemple X11), la fonction drawConvexPolygon() peut être plus rapide que la fonction drawPolygon().

Voir également drawPolygon(), drawPolyline() et Système de coordonnées.

void QPainter::drawConvexPolygon(const QPolygon &polygon)

Dessine le polygone convexe défini par polygon à l'aide du stylo et du pinceau actuels.

Il s'agit d'une fonction surchargée.

void QPainter::drawConvexPolygon(const QPolygonF &polygon)

Dessine le polygone convexe défini par polygon à l'aide du stylo et du pinceau actuels.

Il s'agit d'une fonction surchargée.

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

Dessine le polygone convexe défini par les points de la première pointCount s du tableau « points » à l'aide du stylo actuel.

Il s'agit d'une fonction surchargée.

void QPainter::drawEllipse(const QRectF &rectangle)

Dessine l'ellipse définie par les coordonnées données rectangle.

Une ellipse remplie a une taille de rectangle.size(). Une ellipse avec contour a une taille de rectangle.size() plus la largeur du stylo.

Contour d'ellipse
QRectF rectangle(10.0, 20.0, 80.0, 60.0);

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

Voir également drawPie() et Système de coordonnées.

void QPainter::drawEllipse(const QRect &rectangle)

Dessine l'ellipse définie par l'rectangle s fournies.

Il s'agit d'une fonction surchargée.

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

Dessine l'ellipse située aux coordonnées center, dont les rayons sont rx et ry.

Il s'agit d'une fonction surchargée.

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

Dessine l'ellipse située à l'center, dont les rayons sont rx et ry.

Il s'agit d'une fonction surchargée.

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

Dessine l'ellipse définie par le rectangle dont les sommets sont (x, y), avec les paramètres width et height fournis.

Il s'agit d'une fonction surchargée.

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

Affiche les glyphes représentés par glyphs à l'adresse position. Le paramètre « position » indique le bord de la ligne de base de la chaîne de glyphes. Les glyphes seront extraits de la police sélectionnée sur glyphs et aux décalages indiqués par les positions figurant dans glyphs.

Voir également QGlyphRun::setRawFont(), QGlyphRun::setPositions() et QGlyphRun::setGlyphIndexes().

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

Dessine la partie rectangulaire source de l'image donné dans le rectangle target du périphérique de dessin.

Remarque : l'image est redimensionnée pour s'adapter au rectangle si les tailles de l'image et du rectangle ne correspondent pas.

Remarque : voir Drawing High Resolution Versions of Pixmaps and Images pour savoir comment cela est influencé par la fonction QImage::devicePixelRatio().

Si l’image doit être modifiée pour s’adapter à un résultat de résolution inférieure (par exemple, conversion de 32 bits à 8 bits), utilisez la fonction flags pour spécifier la manière dont vous souhaitez que cette opération soit effectuée.

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);

Voir également drawPixmap() et QImage::devicePixelRatio().

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

Affiche l'image e indiquée à l'point indiquée.

Il s'agit d'une fonction surchargée.

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

Affiche l'image on indiquée à l'point indiquée.

Il s'agit d'une fonction surchargée.

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

Affiche l'image on fournie dans l'rectangle on fournie.

Remarque : l'image est redimensionnée pour s'adapter au rectangle si les dimensions de l'image et du rectangle ne correspondent pas.

Il s'agit d'une fonction surchargée.

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

Affiche l'image on fournie dans l'rectangle on fournie.

Remarque : l'image est redimensionnée pour s'adapter au rectangle si les dimensions de l'image et du rectangle ne correspondent pas.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire source de l'image donnée, dont l'origine se trouve au point point.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire source de l'image donnée, dont l'origine se trouve à l'point indiquée.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire source de l'image donné dans le rectangle target du périphérique de dessin.

Remarque : l'image est redimensionnée pour s'adapter au rectangle si les tailles de l'image et du rectangle ne correspondent pas.

Il s'agit d'une fonction surchargée.

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)

Dessine une image aux coordonnées (x, y) en copiant une partie de image dans le périphérique de dessin.

(x, y) spécifie le point d'angle supérieur gauche dans le périmètre de dessin sur lequel l'image doit être dessinée. (sx, sy) spécifie le point d'angle supérieur gauche dans image qui doit être dessiné. La valeur par défaut est (0, 0).

(sw, sh) spécifie la taille de l’image à dessiner. La valeur par défaut, (0, 0) (et les valeurs négatives), correspond à la zone allant jusqu’au coin inférieur droit de l’image.

Il s'agit d'une fonction surchargée.

void QPainter::drawLine(const QLineF &line)

Trace une ligne définie par line.

Ligne diagonale
QLineF line(10.0, 80.0, 90.0, 20.0);

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

Voir également drawLines(), drawPolyline() et Système de coordonnées.

void QPainter::drawLine(const QLine &line)

Dessine une ligne définie par line.

Il s'agit d'une fonction surchargée.

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

Trace une ligne reliant p1 à p2.

Il s'agit d'une fonction surchargée.

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

Trace une ligne reliant p1 à p2.

Il s'agit d'une fonction surchargée.

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

Trace une droite reliant les points (x1, y1) à (x2, y2).

Il s'agit d'une fonction surchargée.

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

Dessine les premières lignes de type « lineCount » du tableau « lines » à l'aide du stylo actuel.

Voir également drawLine() et drawPolyline().

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

Dessine l'ensemble des lignes définies par la liste lines à l'aide du stylo et du pinceau actuels.

Il s'agit d'une fonction surchargée.

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

Dessine l'ensemble des lignes définies par la liste lines à l'aide du stylo et du pinceau actuels.

Il s'agit d'une fonction surchargée.

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

Dessine une ligne pour chaque paire de points du vecteur pointPairs à l'aide du stylo actuel.

Il s'agit d'une fonction surchargée.

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

Dessine une ligne pour chaque paire de points du vecteur ` pointPairs ` à l'aide du stylo actuel. Si le tableau contient un nombre impair de points, le dernier point sera ignoré.

Il s'agit d'une fonction surchargée.

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

Dessine les lineCount premières lignes du tableau lines à l'aide du stylo actuel.

Il s'agit d'une fonction surchargée.

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

Dessine les lineCount premières lignes du tableau « pointPairs » à l'aide du stylo actuel.

Il s'agit d'une fonction surchargée.

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

Dessine les lineCount premières lignes du tableau pointPairs à l'aide du stylo actuel. Les lignes sont spécifiées sous forme de paires de points ; le nombre d'entrées dans pointPairs doit donc être au moins égal à lineCount * 2.

Il s'agit d'une fonction surchargée.

void QPainter::drawPath(const QPainterPath &path)

Dessine l'path « painter » spécifiée en utilisant le stylo actuel pour le contour et le pinceau actuel pour le remplissage.

Trajet de courbe de Bézier
QPainterPath path;
path.moveTo(20, 80);
path.lineTo(20, 30);
path.cubicTo(80, 0, 50, 50, 80, 80);

QPainter painter(this);
painter.drawPath(path);

Voir également l'exemple «Painter Paths » et l'exemple « Vector Deformation ».

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

Relance l'picture spécifiée à l'adresse point.

La classe ` QPicture ` est un périphérique de dessin qui enregistre et relance les commandes ` QPainter `. Une image sérialise les commandes de dessin vers un périphérique d’E/S dans un format indépendant de la plate-forme. Tout ce qui peut être dessiné sur un widget ou une image bitmap peut également être stocké dans une image.

Cette fonction fait exactement la même chose que ` QPicture::play()` lorsqu’elle est appelée avec ` point = QPointF(0, 0)`.

Remarque : l’état du peintre est conservé par cette fonction.

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

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

Voir aussi ` QPicture::play()`.

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

Lance la rediffusion de l’ picture on indiquée à l’adresse point.

Il s'agit d'une fonction surchargée.

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

Dessine l'picture e indiquée au point (x, y).

Il s'agit d'une fonction surchargée.

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

Affiche un diagramme circulaire défini par les coordonnées fournies : rectangle, startAngle et spanAngle.

Le cercle est rempli avec la couleur actuelle brush().

Les paramètres startAngle et spanAngle doivent être spécifiés en 1/16e de degré, c’est-à-dire qu’un cercle complet équivaut à 5 760 (16 × 360). Les valeurs positives des angles correspondent à un sens antihoraire, tandis que les valeurs négatives correspondent à un sens horaire. Zéro degré correspond à la position 3 heures. Si rectangle n’est pas un carré, les angles sont des angles excentriques et ne mesurent pas la direction à partir du centre du rectangle, comme décrit dans Arcs and Ellipses.

En forme de part de tarte
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);

Voir également drawEllipse(), drawChord() et Système de coordonnées.

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

Dessine un diagramme circulaire défini par les coordonnées rectangle, startAngle et spanAngle.

Il s'agit d'une fonction surchargée.

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

Dessine le secteur défini par le rectangle dont les coins sont situés respectivement en (x, y), avec les paramètres width et height spécifiés, ainsi que les coordonnées startAngle et spanAngle fournies.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire source de l'image donnée pixmap dans la zone donnée target du périphérique de dessin.

Remarque : la carte de pixels est redimensionnée pour s'adapter au rectangle si la taille de la carte de pixels et celle du rectangle ne correspondent pas.

Remarque : voir Drawing High Resolution Versions of Pixmaps and Images pour savoir comment cela est influencé par QPixmap::devicePixelRatio().

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);

Si pixmap est un QBitmap, il est dessiné avec les bits « activés » en utilisant la couleur des stylos. Si backgroundMode est Qt::OpaqueMode, les bits « désactivés » sont dessinés en utilisant la couleur du pinceau d’arrière-plan ; si backgroundMode est Qt::TransparentMode, les bits « désactivés » sont transparents. Le dessin de bitmaps avec des couleurs en dégradé ou en texture n’est pas pris en charge.

Voir également drawImage() et QPixmap::devicePixelRatio().

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

Dessine l'pixmap donnée dont l'origine se trouve à l'point indiquée.

Il s'agit d'une fonction surchargée.

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

Dessine l'pixmap donnée dont l'origine se trouve à l'point indiquée.

Il s'agit d'une fonction surchargée.

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

Dessine l'pixmap on fournie dans l'rectangle on fournie.

Remarque : la carte de pixels est redimensionnée pour s'adapter au rectangle si leurs tailles ne correspondent pas.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire source de la surface donnée pixmap, dont l'origine se trouve au point donné point.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire source de l'pixmap donnée, dont l'origine se trouve au point point.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire source de l'pixmap donné dans la zone target spécifiée du périphérique de dessin.

Remarque : la carte de pixels est redimensionnée pour s'adapter au rectangle si les tailles de la carte de pixels et du rectangle ne correspondent pas.

Il s'agit d'une fonction surchargée.

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

Affiche l'pixmap on indiquée à la position (x, y).

Il s'agit d'une fonction surchargée.

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

Dessine l'pixmap e dans le rectangle situé à la position (x, y) avec les paramètres width et height fournis.

Il s'agit d'une fonction surchargée.

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

Dessine une image pixelisée à l'emplacement (x, y) en copiant une partie de l'pixmap fournie dans le périphérique de dessin.

(x, y) spécifie le point d'angle supérieur gauche du périphérique de dessin sur lequel le dessin doit être effectué. (sx, sy) spécifie le point d'angle supérieur gauche de l'image pixmap à dessiner. La valeur par défaut est (0, 0).

(sw, sh) spécifie la taille de la carte de pixels sur laquelle le dessin doit être effectué. La valeur par défaut, (0, 0) (et les valeurs négatives), correspond à la zone allant jusqu’au coin inférieur droit de la carte de pixels.

Il s'agit d'une fonction surchargée.

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

Dessine la partie rectangulaire dont l'origine est (sx, sy), la largeur sw et la hauteur sh, de l'pixmap donné, au point (x, y), avec une largeur de w et une hauteur de h. Si sw ou sh sont égaux à zéro, la largeur/hauteur de la pixmap est utilisée et ajustée par le décalage sx/sy ;

Il s'agit d'une fonction surchargée.

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

Cette fonction sert à dessiner pixmap, ou un sous-rectangle de pixmap, à plusieurs emplacements avec des échelles, des rotations et des opacités différentes. fragments est un tableau de fragmentCount éléments spécifiant les paramètres utilisés pour dessiner chaque fragment de pixmap. Le paramètre hints peut être utilisé pour transmettre des indications de dessin.

Cette fonction est potentiellement plus rapide que plusieurs appels à ` drawPixmap()`, car le moteur peut optimiser les changements d’état.

Voir également QPainter::PixmapFragment et QPainter::PixmapFragmentHint.

void QPainter::drawPoint(const QPointF &position)

Trace un point unique aux coordonnées position, en utilisant la couleur actuelle du stylo.

Voir aussi Système de coordonnées.

void QPainter::drawPoint(const QPoint &position)

Dessine un point unique à l'position indiquée en utilisant la couleur du stylo actuel.

Il s'agit d'une fonction surchargée.

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

Dessine un point unique à la position (x, y).

Il s'agit d'une fonction surchargée.

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

Dessine les premiers points de l'pointCount s du tableau points en utilisant la couleur du stylo actuel.

Voir aussi Système de coordonnées.

void QPainter::drawPoints(const QPolygon &points)

Trace les points du vecteur points.

Il s'agit d'une fonction surchargée.

void QPainter::drawPoints(const QPolygonF &points)

Trace les points du vecteur points.

Il s'agit d'une fonction surchargée.

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

Dessine les pointCount premiers points du tableau points en utilisant la couleur du stylo actuel.

Il s'agit d'une fonction surchargée.

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

Dessine le polygone défini par les premiers points d'pointCount s du tableau points à l'aide du stylo et du pinceau actuels.

Polygone à quatre côtés
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);

Le premier point est implicitement relié au dernier point, et le polygone est rempli avec l'brush() actuel.

Si fillRule est Qt::WindingFill, le polygone est rempli à l’aide de l’algorithme de remplissage « winding ». Si fillRule est Qt::OddEvenFill, le polygone est rempli à l’aide de l’algorithme de remplissage « odd-even ». Voir Qt::FillRule pour une description plus détaillée de ces règles de remplissage.

Voir également drawConvexPolygon(), drawPolyline() et Système de coordonnées.

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

Dessine le polygone défini par l'points ion fournie en utilisant la règle de remplissage « fillRule ».

Il s'agit d'une fonction surchargée.

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

Dessine le polygone défini par l'points donnée en utilisant la règle de remplissage « fillRule ».

Il s'agit d'une fonction surchargée.

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

Dessine le polygone défini par les premiers points de l'pointCount s du tableau points.

Il s’agit d’une fonction surchargée.

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

Dessine la polyligne définie par les premiers points de la fonction « pointCount » dans « points » à l'aide du stylo actuel.

Notez que, contrairement à la fonction drawPolygon(), le dernier point n' est pas relié au premier, et la polyligne n'est pas remplie.

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);

Voir également drawLines(), drawPolygon() et Système de coordonnées.

void QPainter::drawPolyline(const QPolygon &points)

Dessine la polyligne définie par l'points on fournie à l'aide du stylo actuel.

Il s'agit d'une fonction surchargée.

void QPainter::drawPolyline(const QPolygonF &points)

Dessine la polyligne définie par l'points on fournie à l'aide du stylo actuel.

Il s'agit d'une fonction surchargée.

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

Dessine la polyligne définie par les premiers points d'pointCount s dans « points » à l'aide du stylo actuel.

Il s'agit d'une fonction surchargée.

void QPainter::drawRect(const QRectF &rectangle)

Dessine l'rectangle e actuel avec le stylo et le pinceau actuels.

Un rectangle rempli a une taille de rectangle.size(). Un rectangle avec contour a une taille de rectangle.size() plus la largeur du stylo.

Contour rectangulaire
QRectF rectangle(10.0, 20.0, 80.0, 60.0);

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

Voir également drawRects(), drawPolygon() et Système de coordonnées.

void QPainter::drawRect(const QRect &rectangle)

Dessine l'rectangle e actuelle avec le stylo et le pinceau sélectionnés.

Il s'agit d'une fonction surchargée.

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

Dessine un rectangle dont le coin supérieur gauche est situé aux coordonnées (x, y) et dont les paramètres « width » et « height » sont fournis.

Il s'agit d'une fonction surchargée.

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

Dessine la première rectCount de l'rectangles donné à l'aide du stylo et du pinceau actuels.

Voir aussi drawRect().

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

Dessine l'rectangles on fournie à l'aide du stylo et du pinceau actuels.

Il s'agit d'une fonction surchargée.

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

Dessine l'rectangles on indiquée à l'aide du stylo et du pinceau actuels.

Il s'agit d'une fonction surchargée.

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

Dessine le premier élément « rectCount » de l’ rectangles donné à l’aide du stylo et du pinceau actuels.

Il s'agit d'une fonction surchargée.

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

Dessine le rectangle rect spécifié avec des coins arrondis.

Les arguments xRadius et yRadius spécifient les rayons des ellipses définissant les coins du rectangle arrondi. Lorsque mode vaut Qt::RelativeSize, xRadius et yRadius sont spécifiés en pourcentage de la moitié de la largeur et de la hauteur du rectangle respectivement, et doivent être compris entre 0,0 et 100,0.

Un rectangle rempli a pour taille rect.size(). Un rectangle avec contour a pour taille rect.size() plus la largeur du stylo.

Contour de rectangle aux angles arrondis
QRectF rectangle(10.0, 20.0, 80.0, 60.0);

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

Voir également drawRect() et QPen.

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

Dessine le rectangle donné rect avec des coins arrondis.

Il s'agit d'une fonction surchargée.

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

Dessine le rectangle spécifié x, y, w, h avec des coins arrondis.

Il s'agit d'une fonction surchargée.

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

Affiche l'staticText on fournie à l'topLeftPosition on indiquée.

Le texte sera dessiné en utilisant la police et la transformation définies sur le peintre. Si la police et/ou la transformation définies sur le peintre sont différentes de celles utilisées pour initialiser la mise en page de l'QStaticText, celle-ci devra alors être recalculée. Utilisez QStaticText::prepare() pour initialiser staticText avec la police et la transformation avec lesquelles il sera dessiné ultérieurement.

Si ` topLeftPosition ` n’est pas identique à ce qu’il était lors de l’initialisation de ` staticText ` ou lors de son dernier tracé, il y aura un léger surcoût lors du déplacement du texte vers sa nouvelle position.

Remarque : si la transformation du peintre n’est pas affine, alors staticText sera dessiné à l’aide d’appels classiques à drawText(), ce qui annulera tout gain de performance potentiel.

Remarque : la position y correspond au haut de la police.

Voir également QStaticText.

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

Affiche l'staticText à l'adresse topLeftPosition.

Remarque : la position y correspond au haut de la police.

Il s'agit d'une fonction surchargée.

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

Dessine l'staticText e aux coordonnées left et top.

Remarque : la position y correspond au haut de la police.

Il s'agit d'une fonction surchargée.

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

Dessine l'text on fournie selon le sens d'écriture actuellement défini, en commençant à l'position ion indiquée.

Cette fonction ne gère pas le caractère de nouvelle ligne (\n), car elle ne peut pas diviser le texte en plusieurs lignes et ne peut pas afficher ce caractère. Utilisez plutôt la surcharge de QPainter::drawText() qui prend un rectangle si vous souhaitez dessiner plusieurs lignes de texte avec le caractère de nouvelle ligne, ou si vous souhaitez que le texte soit renvoyé à la ligne.

Par défaut, QPainter dessine le texte avec l'anticrénelage.

Remarque : la position y est utilisée comme ligne de base de la police.

Voir également setFont() et setPen().

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

Dessine l'text on fournie selon le sens d'écriture actuellement défini, en commençant à l'position ion indiquée.

Par défaut, la fonction ` QPainter ` affiche le texte avec lissage.

Remarque : la position y est utilisée comme ligne de base de la police.

Il s'agit d'une fonction surchargée.

Voir également setFont() et setPen().

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

Dessine l'text spécifié dans l'rectangle, en utilisant l'option pour contrôler son positionnement, sa direction et son orientation. Les options fournies dans option remplacent celles définies sur l'objet QPainter lui-même.

Par défaut, QPainter affiche le texte avec lissage des contours.

Remarque : la coordonnée y de rectangle est utilisée comme haut de la police.

Il s’agit d’une fonction surchargée.

Voir également setFont() et setPen().

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

Dessine l'text on fournie à la position (x, y), en utilisant la direction du texte actuellement définie par le peintre.

Par défaut, la fonction ` QPainter ` affiche le texte avec lissage.

Remarque : la position y est utilisée comme ligne de base de la police.

Il s’agit d’une fonction surchargée.

Voir également setFont() et setPen().

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

Dessine l'text donné à l'intérieur de l'rectangle fournie, conformément à l'flags spécifiée.

L'boundingRect (si elle n'est pas nulle) définit les dimensions que doit avoir le rectangle de délimitation pour englober l'intégralité du texte. Par exemple, dans l'image suivante, la ligne pointillée représente l'boundingRect telle que calculée par la fonction, et la ligne en pointillés représente l'rectangle:

Texte avec rectangles de délimitation
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()));

Par défaut, QPainter affiche le texte avec lissage.

Remarque : la coordonnée y de ` rectangle ` est utilisée comme haut de la police.

Il s'agit d'une fonction surchargée.

Voir également setFont() et setPen().

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

Dessine l'text donné à l'intérieur de l'rectangle fourni. L'rectangle, associé à l'alignement flags, définit les ancrages de l'text.

Texte présentant le projet Qt
QPainter painter(this);
painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject"));

L’ boundingRect (s’il n’est pas nul) définit les limites du rectangle de délimitation nécessaire pour englober l’intégralité du texte. Par exemple, dans l’image suivante, la ligne pointillée représente l’ boundingRect telle qu’elle est calculée par la fonction, et la ligne en pointillés représente l’ rectangle:

Texte avec des rectangles de délimitation
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()));

L’argument ` flags ` est un OU binaire des indicateurs suivants :

Par défaut, QPainter affiche le texte avec lissage des contours.

Remarque : la coordonnée y de rectangle est utilisée comme haut de la police.

Il s'agit d'une fonction surchargée.

Voir également Qt::AlignmentFlag, Qt::TextFlag, boundingRect() et layoutDirection().

void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)

Dessine l'text donné à l'intérieur du rectangle dont les coordonnées d'origine sont (x, y), width et height.

L’ boundingRect (s’il n’est pas nul) définit les dimensions que doit avoir le rectangle de délimitation pour englober l’intégralité du texte. Par exemple, dans l’image suivante, la ligne pointillée représente boundingRect tel qu’il est calculé par la fonction, et la ligne en pointillés représente le rectangle défini par x, y, width et height:

Texte avec des rectangles de délimitation
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()));

L'argument ` flags ` est un OU binaire des indicateurs suivants :

Par défaut, QPainter dessine le texte avec lissage.

Remarque : la position y est utilisée comme haut de la police.

Il s'agit d'une fonction surchargée.

Voir également Qt::AlignmentFlag, Qt::TextFlag, setFont() et setPen().

void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())

Dessine une image en mosaïque ( pixmap) à l'intérieur de l'rectangle spécifiée, dont l'origine se trouve au point position indiqué.

L'appel à drawTiledPixmap() revient à appeler plusieurs fois drawPixmap() pour remplir (mosaïquer) une zone avec une image pixmap, mais peut s'avérer bien plus efficace selon le système de fenêtrage sous-jacent.

La fonction drawTiledPixmap() produira le même motif de mosaïque sur les écrans à haute résolution (avec devicePixelRatio > 1) que sur les écrans à résolution normale. Définissez la valeur devicePixelRatio de la fonction pixmap pour contrôler la taille des tuiles. Par exemple, en la définissant sur 2, vous divisez par deux la largeur et la hauteur des tuiles (sur les écrans 1x et 2x), et obtenez un rendu haute résolution sur les écrans 2x.

Le décalage de l’ position est exprimé en pixels indépendants du périphérique par rapport au coin supérieur gauche de l’ rectangle. La propriété position peut être utilisée pour aligner le motif répétitif à l’intérieur de l’ rectangle.

Voir également drawPixmap().

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

Dessine un pixmap en mosaïque, à l'intérieur de l'rectangle donné, dont l'origine est située au position donné.

Il s'agit d'une fonction surchargée.

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

Dessine une pixmap en mosaïque dans le rectangle spécifié.

(x, y) spécifie le point supérieur gauche du périphérique de dessin sur lequel l'image doit être dessinée ; avec les paramètres width et height.

(sx, sy) spécifie l’origine à l’intérieur du rectangle spécifié où la carte de pixels sera dessinée. La position de l’origine est spécifiée en pixels indépendants du périphérique par rapport à (x, y). La valeur par défaut est (0, 0).

Il s'agit d'une fonction surchargée.

bool QPainter::end()

Mette fin au processus de dessin. Toutes les ressources utilisées pendant le dessin sont libérées. Vous n'avez normalement pas besoin d'appeler cette méthode, car elle est appelée par le destructeur.

Renvoie ` true ` si le peintre n'est plus actif ; sinon, renvoie ` false`.

Voir également begin() et isActive().

void QPainter::endNativePainting()

Rétablit l'état du « painter » après l'exécution manuelle de commandes de dessin natives. Permet au « painter » de rétablir tout état natif dont il dépend avant d'appeler d'autres commandes de dessin.

Voir aussi beginNativePainting().

void QPainter::eraseRect(const QRectF &rectangle)

Efface la zone située à l'intérieur de l'rectangle. Équivaut à l'appel de

fillRect(rectangle, background());

Voir aussi fillRect().

void QPainter::eraseRect(const QRect &rectangle)

Efface la zone située à l'intérieur de l'rectangle.

Il s'agit d'une fonction surchargée.

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

Efface la zone située à l'intérieur du rectangle dont les coins sont les points (x, y), en utilisant les paramètres width et height fournis.

Il s'agit d'une fonction surchargée.

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

Remplit l'path spécifiée à l'aide de l'brush fournie. Le contour n'est pas tracé.

Vous pouvez également spécifier un QColor à la place d’un QBrush; le constructeur QBrush (qui prend un argument QColor ) créera automatiquement un pinceau à motif plein.

Voir également drawPath().

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

Remplit l'rectangle on fournie avec l'brush on spécifiée.

Vous pouvez également spécifier un « QColor » à la place d’un « QBrush » ; le constructeur « QBrush » (qui prend un argument « QColor ») créera automatiquement un pinceau à motif uni.

Voir également drawRect().

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

Remplit l'rectangle on fournie avec le dégradé spécifié preset.

Il s'agit d'une fonction surchargée.

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

Remplit l'rectangle on indiquée avec le pinceau style spécifié.

Il s'agit d'une fonction surchargée.

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

Remplit l'rectangle on fournie avec l'color on spécifiée.

Il s'agit d'une fonction surchargée.

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

Remplit l'rectangle on fournie avec l'brush on spécifiée.

Il s'agit d'une fonction surchargée.

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

Remplit l'rectangle on fournie avec l'color on spécifiée.

Il s'agit d'une fonction surchargée.

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

Remplit l’ rectangle on fournie avec le dégradé spécifié preset.

Il s’agit d’une fonction surchargée.

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

Remplit l'rectangle on indiquée avec le pinceau style spécifié.

Il s'agit d'une fonction surchargée.

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

Remplit l'rectangle on fournie avec l'color on spécifiée.

Il s'agit d'une fonction surchargée.

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

Remplit l'rectangle on fournie avec l'color on spécifiée.

Il s'agit d'une fonction surchargée.

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

Remplit le rectangle dont les coins de départ sont (x, y) avec les valeurs données width et height, en utilisant le dégradé donné preset.

Il s'agit d'une fonction surchargée.

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

Remplit le rectangle dont les coins de départ sont (x, y) avec les valeurs width et height fournies, en utilisant le pinceau style spécifié.

Il s'agit d'une fonction surchargée.

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

Remplit le rectangle dont les coins sont situés en (x, y) avec les valeurs données width et height, en utilisant la fonction donnée color.

Il s'agit d'une fonction surchargée.

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

Remplit le rectangle dont les coins sont situés en (x, y) avec les valeurs données width et height, en utilisant la fonction donnée brush.

Il s'agit d'une fonction surchargée.

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

Remplit le rectangle dont les coins sont situés aux coordonnées (x, y) avec les valeurs width et height, en utilisant la fonction color.

Il s'agit d'une fonction surchargée.

const QFont &QPainter::font() const

Renvoie la police actuellement définie pour l'affichage du texte.

Voir également setFont(), drawText() et Settings.

QFontInfo QPainter::fontInfo() const

Renvoie les informations relatives à la police du « painter » si celui-ci est actif. Dans le cas contraire, la valeur renvoyée n'est pas définie.

Voir également font(), isActive() et Settings.

QFontMetrics QPainter::fontMetrics() const

Renvoie les métriques de police pour le peintre si celui-ci est actif. Sinon, la valeur renvoyée n'est pas définie.

Voir également font(), isActive() et Settings.

bool QPainter::hasClipping() const

Renvoie « true » si le découpage a été activé ; sinon, renvoie « false ».

Voir également setClipping() et Clipping.

bool QPainter::isActive() const

Renvoie ` true ` si ` begin()` a été appelée et si ` end()` n'a pas encore été appelée ; sinon, renvoie ` false`.

Voir également ` begin()` et ` QPaintDevice::paintingActive()`.

Qt::LayoutDirection QPainter::layoutDirection() const

Renvoie le sens de mise en page utilisé par le moteur de rendu lors de l'affichage du texte.

Voir également QTextOption::textDirection(), setLayoutDirection(), drawText() et Settings.

qreal QPainter::opacity() const

Renvoie l'opacité du peintre. La valeur par défaut est 1.

Voir aussi setOpacity().

QPaintEngine *QPainter::paintEngine() const

Renvoie le moteur de peinture sur lequel le « painter » opère actuellement si celui-ci est actif ; sinon, renvoie 0.

Voir également isActive().

const QPen &QPainter::pen() const

Renvoie le stylo actuellement utilisé par le peintre.

Voir également setPen() et Settings.

QPainter::RenderHints QPainter::renderHints() const

Renvoie un indicateur précisant les consignes de rendu définies pour ce « painter ».

Voir également setRenderHints(), testRenderHint() et Rendering Quality.

void QPainter::resetTransform()

Réinitialise toutes les transformations effectuées à l'aide des fonctions translate(), scale(), shear(), rotate(), setWorldTransform(), setViewport() et setWindow().

Voir également Coordinate Transformations.

void QPainter::restore()

Restaure l'état actuel du « painter » (retire un état enregistré de la pile).

Voir aussi save().

void QPainter::rotate(qreal angle)

Fait pivoter le système de coordonnées dans le sens des aiguilles d'une montre. Le paramètre « angle » est exprimé en degrés.

Voir également setWorldTransform() et Coordinate Transformations.

void QPainter::save()

Enregistre l'état actuel du « painter » (place l'état dans une pile). Un appel à save() doit être suivi d'un appel correspondant à restore(); la fonction end() désemballe la pile.

Voir également restore().

void QPainter::scale(qreal sx, qreal sy)

Mise à l'échelle du système de coordonnées par (sx, sy).

Voir également setWorldTransform() et Coordinate Transformations.

void QPainter::setBackground(const QBrush &brush)

Définit le pinceau d'arrière-plan de l'outil « peintre » sur l'brush spécifiée.

Le pinceau d’arrière-plan est celui qui est utilisé pour remplir les zones lors du tracé de texte opaque, de lignes pointillées et d’images bitmap. Le pinceau d’arrière-plan n’a aucun effet en mode d’arrière-plan transparent (qui est le mode par défaut).

Voir également background(), setBackgroundMode() et Settings.

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

Définit le mode d'arrière-plan de l'outil de dessin sur la valeur indiquée mode

Qt::TransparentMode (valeur par défaut) dessine des lignes pointillées et du texte sans définir les pixels d'arrière-plan. La fonction Qt::OpaqueMode remplit ces espaces avec la couleur d'arrière-plan actuelle.

Notez que pour dessiner un bitmap ou un pixmap de manière transparente, vous devez utiliser ` QPixmap::setMask()`.

Voir également backgroundMode(), setBackground() et Settings.

void QPainter::setBrush(const QBrush &brush)

Définit le pinceau du peintre selon l'brush on indiquée.

Le pinceau du peintre définit la manière dont les formes sont remplies.

Voir également brush() et Settings.

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

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.11.

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

Définit le pinceau du peintre comme un pinceau plein avec l'color spécifiée.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.9.

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

Définit la couleur du pinceau du peintre sur le noir et l'style spécifiée.

Il s'agit d'une fonction surchargée.

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

Définit le pinceau du peintre comme un pinceau plein avec l'color spécifiée.

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.9.

void QPainter::setBrushOrigin(const QPointF &position)

Définit l'origine du pinceau sur position.

L'origine du pinceau spécifie la coordonnée (0, 0) du pinceau du peintre.

Notez que si la fonction brushOrigin() était nécessaire pour adopter l’arrière-plan du parent d’un widget dans Qt 3, ce n’est plus le cas depuis Qt 4, car le peintre de Qt 4 ne dessine pas l’arrière-plan à moins que vous ne le lui demandiez explicitement en définissant la propriété autoFillBackground du widget sur true.

Voir également brushOrigin() et Settings.

void QPainter::setBrushOrigin(const QPoint &position)

Définit l'origine du pinceau à l'position indiquée.

Il s'agit d'une fonction surchargée.

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

Définit l'origine du pinceau sur le point (x, y).

Il s'agit d'une fonction surchargée.

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

Active le découpage et définit le chemin de découpage pour l'outil de peinture sur l'path, avec l'operation de découpage.

Notez que le tracé de découpe est spécifié en coordonnées logiques (du peintre).

Voir également clipPath(), clipRegion() et Clipping.

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

Active le découpage et définit la zone de découpage selon l'rectangle s fournies, en utilisant l'operation de découpage indiquée. Par défaut, cette opération remplace le rectangle de découpage actuel.

Notez que le rectangle de découpe est spécifié en coordonnées logiques (du peintre).

Voir également clipRegion(), setClipping() et Clipping.

void QPainter::setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)

Active le découpage et définit la zone de découpage comme étant le rectangle dont les coordonnées de départ sont (x, y), avec les paramètres width et height spécifiés.

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

Active le clipping et définit la zone de clipping sur l'rectangle spécifiée à l'aide de l'operation de clipping indiquée.

Il s'agit d'une fonction surchargée.

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

Définit la région de découpage selon l'region donnée à l'aide de l'operation de découpage spécifiée. Par défaut, l'opération de découpage consiste à remplacer la région de découpage actuelle.

Notez que la région de découpage est exprimée en coordonnées logiques.

Voir également clipRegion(), setClipRect() et Clipping.

void QPainter::setClipping(bool enable)

Active le clipping si enable a la valeur « true », ou le désactive si enable a la valeur « false ».

Voir également hasClipping() et Clipping.

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

Définit le mode de composition sur l'mode spécifiée.

Avertissement : seul un QPainter fonctionnant sur un QImage prend entièrement en charge tous les modes de composition. Les modes RasterOp sont pris en charge pour X11, comme décrit dans compositionMode().

Voir également compositionMode().

void QPainter::setFont(const QFont &font)

Définit la police du peintre sur la valeur indiquée par ` font`.

Cette police est utilisée par les fonctions drawText() suivantes. La couleur du texte est identique à celle du stylo.

Si vous définissez une police qui n’est pas disponible, Qt trouve une police similaire. La fonction ` font()` renvoie la police que vous avez définie à l’aide de `setFont()`, tandis que ` fontInfo()` renvoie la police effectivement utilisée (qui peut être la même).

Voir également font(), drawText() et Settings.

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

Définit la direction de mise en page utilisée par le moteur de dessin lors de l'affichage du texte, en indiquant l'direction.

La valeur par défaut est ` Qt::LayoutDirectionAuto`, ce qui déterminera implicitement la direction à partir du texte dessiné.

Voir également QTextOption::setTextDirection(), layoutDirection(), drawText() et Settings.

void QPainter::setOpacity(qreal opacity)

Définit l'opacité de l'outil de dessin sur opacity. La valeur doit être comprise entre 0,0 et 1,0, où 0,0 correspond à une transparence totale et 1,0 à une opacité totale.

L'opacité définie pour l'outil de dessin s'applique séparément à chaque opération de dessin. Le remplissage d'une forme et le tracé de son contour sont considérés comme des opérations de dessin distinctes.

Voir également opacity().

void QPainter::setPen(const QPen &pen)

Définit le stylo du peintre sur l'pen spécifiée.

L'pen définit la manière de dessiner les lignes et les contours, ainsi que la couleur du texte.

Voir aussi pen() et Settings.

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

Il s'agit d'une fonction surchargée.

Cette fonction a été introduite dans Qt 6.11.

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

Définit le stylo du peintre avec l'style, une largeur de 1 et la couleur noire.

Il s'agit d'une fonction surchargée.

void QPainter::setPen(const QColor &color)

Définit le stylo du peintre avec le style « Qt::SolidLine », une largeur de 1 et la couleur spécifiée « color ».

Il s'agit d'une fonction surchargée.

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

Définit l'hint de rendu indiquée sur le « painter » si la valeur de « on » est « true » ; sinon, efface cette .

Voir également setRenderHints(), renderHints() et Rendering Quality.

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

Définit l'hints de rendu spécifiée sur le « painter » si la valeur de « on » est « true » ; sinon, efface les indications de rendu.

Voir également setRenderHint(), renderHints() et Rendering Quality.

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

Définit la matrice de transformation globale. Si la valeur de combine est « true », l'transform spécifiée est combinée avec la matrice actuelle ; dans le cas contraire, elle remplace la matrice actuelle.

Voir également transform() et setWorldTransform().

void QPainter::setViewTransformEnabled(bool enable)

Active les transformations de vue si la valeur de ` enable ` est `true`, ou désactive les transformations de vue si la valeur de ` enable ` est `false`.

Voir également viewTransformEnabled() et Conversion fenêtre-fenêtre de visualisation.

void QPainter::setViewport(const QRect &rectangle)

Définit le rectangle de la fenêtre d'affichage du peintre sur l'rectangle donné et active les transformations de vue.

Le rectangle de la fenêtre d'affichage fait partie de la transformation de la vue. La fenêtre d'affichage définit le système de coordonnées de l'appareil. Son équivalent, la fonction ` window()` (), définit le système de coordonnées logiques.

Le rectangle de la fenêtre d’affichage par défaut est identique à celui du périphérique.

Voir également ` viewport()`, ` viewTransformEnabled()` et Conversion fenêtre-fenêtre de visualisation.

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

Définit le rectangle de la fenêtre d'affichage du peintre comme étant le rectangle dont les coordonnées de départ sont (x, y), avec les paramètres width et height fournis.

Il s'agit d'une fonction surchargée.

void QPainter::setWindow(const QRect &rectangle)

Définit la fenêtre du peintre sur l'rectangle spécifiée et active les transformations de vue.

Le rectangle de la fenêtre fait partie de la transformation de la vue. La fenêtre définit le système de coordonnées logique. Sa fonction jumelle, ` viewport()`, définit le système de coordonnées du périphérique.

Le rectangle de fenêtre par défaut est identique au rectangle du périphérique.

Voir également ` window()`, ` viewTransformEnabled()` et Conversion fenêtre-fenêtre de visualisation.

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

Définit la fenêtre du peintre sur le rectangle dont les coordonnées de départ sont (x, y) et dont les coordonnées de fin sont width et height.

Il s'agit d'une fonction surchargée.

void QPainter::setWorldMatrixEnabled(bool enable)

Active les transformations si enable est vrai, ou les désactive si enable est faux. La matrice de transformation du monde n'est pas modifiée.

Voir également worldMatrixEnabled(), worldTransform() et Coordinate Transformations.

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

Définit la matrice de transformation globale. Si la valeur de « combine » est « true », l'matrix e spécifiée est combinée avec la matrice actuelle ; dans le cas contraire, elle remplace la matrice actuelle.

Voir également worldTransform(), transform() et setTransform().

void QPainter::shear(qreal sh, qreal sv)

Transforme le système de coordonnées selon (sh, sv).

Voir également setWorldTransform() et Coordinate Transformations.

void QPainter::strokePath(const QPainterPath &path, const QPen &pen)

Dessine le contour (tracés) du chemin path à l'aide du stylo spécifié par pen

Voir également fillPath() et Drawing.

bool QPainter::testRenderHint(QPainter::RenderHint hint) const

Renvoie « true » si « hint » est défini ; sinon, renvoie « false ».

Voir également renderHints() et setRenderHint().

const QTransform &QPainter::transform() const

Alias de la fonction worldTransform(). Renvoie la matrice de transformation mondiale.

Voir également setTransform() et worldTransform().

void QPainter::translate(const QPointF &offset)

Translate le système de coordonnées selon l'offset e spécifiée ; c'est-à-dire que l'offset e spécifiée est ajoutée aux points.

Voir également setWorldTransform() et Coordinate Transformations.

void QPainter::translate(const QPoint &offset)

Translate le système de coordonnées selon l'offset e indiquée.

Il s’agit d’une fonction surchargée.

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

Translate le système de coordonnées d'un vecteur (dx, dy).

Il s'agit d'une fonction surchargée.

bool QPainter::viewTransformEnabled() const

Renvoie « true » si la transformation de la vue est activée ; sinon, renvoie « false ».

Voir également setViewTransformEnabled() et worldTransform().

QRect QPainter::viewport() const

Renvoie le rectangle de la fenêtre d'affichage.

Voir également setViewport() et setViewTransformEnabled().

QRect QPainter::window() const

Renvoie le rectangle de la fenêtre.

Voir aussi setWindow() et setViewTransformEnabled().

bool QPainter::worldMatrixEnabled() const

Renvoie « true » si la transformation du monde est activée ; sinon, renvoie « false ».

Voir également setWorldMatrixEnabled(), worldTransform() et Système de coordonnées.

const QTransform &QPainter::worldTransform() const

Renvoie la matrice de transformation mondiale.

Voir aussi 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.