QCanvasPainter Class
La classe QCanvasPainter effectue un traçage accéléré par le matériel sur QRhi. En savoir plus...
| En-tête : | #include <QCanvasPainter> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter) target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| Depuis : | Qt 6.11 |
Types publics
| enum class | CompositeOperation { SourceOver, SourceAtop, DestinationOut } |
(since 6.12) enum class | FillRule { NonZero, EvenOdd } |
| enum class | ImageFlag { GenerateMipmaps, RepeatX, RepeatY, Repeat, FlipY, …, Nearest } |
| flags | ImageFlags |
| enum class | LineCap { Butt, Round, Square } |
| enum class | LineJoin { Round, Bevel, Miter } |
| enum class | PathConnection { NotConnected, Connected } |
| enum class | PathWinding { CounterClockWise, ClockWise } |
| enum class | TextAlign { Left, Right, Center, Start, End } |
| enum class | TextBaseline { Top, Hanging, Middle, Alphabetic, Bottom } |
| enum class | TextDirection { LeftToRight, RightToLeft, Inherit, Auto } |
| enum class | WrapMode { NoWrap, Wrap, WordWrap, WrapAnywhere } |
Fonctions publiques
| QCanvasPainter() | |
| ~QCanvasPainter() | |
| qsizetype | activeImageCount() const |
| qsizetype | activeImageMemoryUsage() const |
| QCanvasImage | addImage(const QImage &image, QCanvasPainter::ImageFlags flags = {}) |
| QCanvasImage | addImage(QRhiTexture *texture, QCanvasPainter::ImageFlags flags = {}) |
| QCanvasImage | addImage(const QCanvasOffscreenCanvas &canvas, QCanvasPainter::ImageFlags flags = {}) |
| void | addPath(const QPainterPath &path) |
| void | addPath(const QCanvasPath &path, const QTransform &transform = QTransform()) |
| void | addPath(const QCanvasPath &path, qsizetype start, qsizetype count, const QTransform &transform = QTransform()) |
| void | arc(qreal centerX, qreal centerY, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected) |
| void | arc(QPointF centerPoint, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected) |
| void | arcTo(qreal x1, qreal y1, qreal x2, qreal y2, qreal radius) |
| void | arcTo(QPointF controlPoint1, QPointF controlPoint2, qreal radius) |
| void | beginHoleSubPath() |
| void | beginPath() |
| void | beginSolidSubPath() |
| void | bezierCurveTo(qreal cp1X, qreal cp1Y, qreal cp2X, qreal cp2Y, qreal x, qreal y) |
| void | bezierCurveTo(QPointF controlPoint1, QPointF controlPoint2, QPointF endPoint) |
| void | circle(qreal centerX, qreal centerY, qreal radius) |
| void | circle(QPointF centerPoint, qreal radius) |
| void | cleanupResources() |
| void | clearRect(qreal x, qreal y, qreal width, qreal height) |
| void | clearRect(const QRectF &rect) |
| void | closePath() |
| QCanvasOffscreenCanvas | createCanvas(QSize pixelSize, int sampleCount = 1, QCanvasOffscreenCanvas::Flags flags = {}) |
| void | destroyCanvas(QCanvasOffscreenCanvas &canvas) |
| void | drawBoxShadow(const QCanvasBoxShadow &shadow) |
| void | drawImage(const QCanvasImage &image, qreal x, qreal y) |
| void | drawImage(const QCanvasImage &image, const QRectF &destinationRect) |
| void | drawImage(const QCanvasImage &image, const QRectF &sourceRect, const QRectF &destinationRect) |
| void | drawImage(const QCanvasImage &image, qreal x, qreal y, qreal width, qreal height) |
| void | ellipse(qreal centerX, qreal centerY, qreal radiusX, qreal radiusY) |
| void | ellipse(const QRectF &rect) |
| void | ellipse(QPointF centerPoint, qreal radiusX, qreal radiusY) |
| void | fill() |
(since 6.12) void | fill(QCanvasPainter::FillRule fillRule) |
| void | fill(const QCanvasPath &path, int pathGroup = -1) |
(since 6.12) void | fill(const QCanvasPath &path, QCanvasPainter::FillRule fillRule, int pathGroup = -1) |
| void | fillRect(qreal x, qreal y, qreal width, qreal height) |
| void | fillRect(const QRectF &rect) |
| void | fillText(const QString &text, qreal x, qreal y, qreal maxWidth = 0) |
| void | fillText(const QString &text, const QRectF &rect) |
| void | fillText(const QString &text, QPointF point, qreal maxWidth = 0) |
| QTransform | getTransform() const |
| void | lineTo(qreal x, qreal y) |
| void | lineTo(QPointF point) |
| void | moveTo(qreal x, qreal y) |
| void | moveTo(QPointF point) |
| void | quadraticCurveTo(qreal cpX, qreal cpY, qreal x, qreal y) |
| void | quadraticCurveTo(QPointF controlPoint, QPointF endPoint) |
| void | rect(qreal x, qreal y, qreal width, qreal height) |
| void | rect(const QRectF &rect) |
| void | removeImage(const QCanvasImage &image) |
| void | removePathGroup(int pathGroup) |
| void | reset() |
| void | resetClipping() |
| void | resetTransform() |
| void | restore() |
| void | rotate(qreal angle) |
| void | roundRect(qreal x, qreal y, qreal width, qreal height, qreal radius) |
| void | roundRect(const QRectF &rect, qreal radius) |
| void | roundRect(const QRectF &rect, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft) |
| void | roundRect(qreal x, qreal y, qreal width, qreal height, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft) |
| void | save() |
| void | scale(qreal scale) |
| void | scale(qreal scaleX, qreal scaleY) |
| void | setAntialias(qreal antialias) |
| void | setClipRect(qreal x, qreal y, qreal width, qreal height) |
| void | setClipRect(const QRectF &rect) |
(since 6.12) void | setFillRule(QCanvasPainter::FillRule fillRule) |
| void | setFillStyle(QColor color) |
| void | setFillStyle(const QCanvasBrush &brush) |
| void | setFont(const QFont &font) |
| void | setGlobalAlpha(qreal alpha) |
| void | setGlobalBrightness(qreal value) |
| void | setGlobalCompositeOperation(QCanvasPainter::CompositeOperation operation) |
| void | setGlobalContrast(qreal value) |
| void | setGlobalSaturation(qreal value) |
| void | setHighQualityStroking(bool enabled) |
| void | setLineCap(QCanvasPainter::LineCap cap) |
| void | setLineJoin(QCanvasPainter::LineJoin join) |
| void | setLineWidth(qreal width) |
| void | setMiterLimit(qreal limit) |
| void | setPathWinding(QCanvasPainter::PathWinding winding) |
| void | setStrokeStyle(QColor color) |
| void | setStrokeStyle(const QCanvasBrush &brush) |
| void | setTextAlign(QCanvasPainter::TextAlign align) |
| void | setTextAntialias(qreal antialias) |
| void | setTextBaseline(QCanvasPainter::TextBaseline baseline) |
| void | setTextDirection(QCanvasPainter::TextDirection direction) |
| void | setTextLineHeight(qreal height) |
| void | setTextWrapMode(QCanvasPainter::WrapMode wrapMode) |
| void | setTransform(const QTransform &transform) |
| void | setWindingEnforce(bool enabled) |
| void | skew(qreal angleX, qreal angleY = 0.0) |
| void | stroke() |
| void | stroke(const QCanvasPath &path, int pathGroup = -1) |
| void | strokeRect(qreal x, qreal y, qreal width, qreal height) |
| void | strokeRect(const QRectF &rect) |
| QRectF | textBoundingBox(const QString &text, qreal x, qreal y, qreal maxWidth = 0) const |
| QRectF | textBoundingBox(const QString &text, const QRectF &rect) const |
| QRectF | textBoundingBox(const QString &text, QPointF point, qreal maxWidth = 0) const |
| void | transform(const QTransform &transform) |
| void | translate(qreal x, qreal y) |
| void | translate(QPointF point) |
Description détaillée
Qt Canvas Painter (QCanvasPainter) fournit une API de dessin optimisée pour le dessin accéléré par le matériel (GPU). L'API suit de près la spécification HTML Canvas 2D Context, portée vers Qt C++. Elle s'inspire également de QPainter, mais avec une API plus compacte.
Voici un exemple simple d'utilisation de QCanvasPainter pour créer un bouton rond.
![]() | |
Voici un autre exemple de dessin d'un graphique simple.
![]() | |
Fonctionnalités
Dans l’ensemble, et du point de vue de la nomenclature, QCanvasPainter suit le contexte 2D HTML Canvas (https://html.spec.whatwg.org/multipage/canvas.html#2dcontext). Cela rend l’API familière à de nombreux développeurs et permet de réutiliser facilement le code Canvas existant. Cependant, l’objectif n’est PAS d’assurer une compatibilité à 100 % avec le Canvas HTML. QCanvasPainter omet certaines fonctionnalités afin d'être plus simple, plus performant sur l'API graphique accélérée par le matériel d'QRhi, et de mieux répondre aux besoins des interfaces utilisateur modernes. Pour ces raisons, QCanvasPainter dispose également de fonctionnalités supplémentaires par rapport au contexte 2D HTML Canvas.
Voici quelques-unes des fonctionnalités qui font actuellement défaut par rapport au canevas HTML :
- Découpage : tout découpage est un rectangle (transformé) et le découpage selon des formes de chemin n'est pas pris en charge.
- Tirages : les traits sont toujours des lignes pleines ; les motifs de traits en pointillés ou en traits discontinus ne sont pas pris en charge.
- Test de chemin : il n’existe pas de méthodes isPointInPath() ou isPointInStroke().
- Contour du texte : le contour du texte n’est pas pris en charge.
- Filtres : les effets de filtre SVG de Canvas ne sont pas pris en charge.
- Modes de composition : le nombre de modes de composition est limité à 3, ce qui peut être pris en charge sans rendu dans des tampons supplémentaires.
- Ombres : les méthodes d'ombre intégrées ne sont pas prises en charge.
En revanche, QCanvasPainter offre certaines fonctionnalités supplémentaires par rapport à HTML Canvas, notamment :
- Groupes de chemins : QCanvasPainter permet de dessiner sur des chemins statiques et de mettre ces chemins en cache sous forme de groupes pour une utilisation optimale du GPU.
- Anticrénelage réglable : grâce à l’anticrénelage des sommets de chemin et au rendu de texte SDF, le nombre de pixels d’anticrénelage peut être librement ajusté pour un tracé plus fluide.
- Dégradé de rectangle : outre les dégradés linéaires, radiaux et coniques, QCanvasPainter prend également en charge le dégradé de rectangle arrondi.
- Ombre portée : QCanvasPainter prend également en charge le type de pinceau « box-shadow » du CSS. Le rendu utilise une approche SDF similaire à celle décrite à l’adresse Qt Quick RectangularShadow , ce qui le rend très performant.
- Motifs en grille : QCanvasPainter prend en charge QCanvasGridPattern pour les styles dynamiques de grille et de motifs en barres.
- Pinceaux personnalisés : QCanvasPainter permet également de remplir et de tracer des contours à l'aide de shaders de sommets et de fragments personnalisés (QCanvasCustomBrush). Ces pinceaux personnalisés peuvent également être utilisés pour le texte.
- Retour à la ligne : QCanvasPainter prend en charge le retour à la ligne automatique du texte sur plusieurs lignes, avec différents modes de retour à la ligne.
- Effets de couleur : en plus de globalAlpha, QCanvasPainter prend également en charge la luminosité, le contraste et la saturation globaux.
- Images teintées : QCanvasPainter ajoute la prise en charge de la teinte pour les images peintes et les motifs d’image.
QCanvasPainter est indépendant de l’architecture et peut être utilisé aussi bien pour les applications Qt Quick que pour celles de type Qt Widgets. En réalité, il est même utilisable sans aucune de ces deux bibliothèques, en utilisant simplement QWindow et QRhi. Pour utiliser QCanvasPainter, appelez-le à partir de l’une de ces classes, en fonction de l’architecture de votre application :
- Qt Quick: Utilisez QCanvasPainterItem et QCanvasPainterItemRenderer.
- Qt Widgets: Utilisez QCanvasPainterWidget.
- QRhiTampons « QWindow » basés sur le «winding» ou tampons « QRhi » hors écran : utilisez QCanvasPainterFactory et QCanvasRhiPaintDriver.
Règles de remplissage
QCanvasPainter utilise par défaut la règle de remplissage NonZero ({Qt::WindingFill}). Pour sélectionner le remplissage en fonction de la direction des points du tracé, désactivez le forçage de l’enroulement en appelant setWindingEnforce(false).
![]() | |
Cependant, le cas le plus courant consiste à s'appuyer sur l'application de la règle de remplissage et à définir le sens de remplissage souhaité à l'aide des fonctions d'aide setPathWinding() ou beginHoleSubPath() et beginSolidSubPath().
![]() | |
Documentation sur les types de membres
enum class QCanvasPainter::CompositeOperation
Qt Canvas Painter prend en charge 3 opérations de composition :
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::CompositeOperation::SourceOver | 0 | Valeur par défaut. Dessine de nouvelles formes par-dessus le contenu existant. |
QCanvasPainter::CompositeOperation::SourceAtop | 1 | La nouvelle forme n'est dessinée que là où elle chevauche le contenu existant. |
QCanvasPainter::CompositeOperation::DestinationOut | 2 | Le contenu existant est conservé là où il ne chevauche pas la nouvelle forme. |
Voir aussi setGlobalCompositeOperation().
[since 6.12] enum class QCanvasPainter::FillRule
Cette énumération définit la manière dont les chemins sont remplis.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::FillRule::NonZero | 0 | Le tracé est rempli selon la règle d'enroulement non nulle. Avec cette règle, on détermine si un point se trouve à l'intérieur de la forme en procédant comme suit : on trace une ligne horizontale partant du point vers un emplacement situé à l'extérieur de la forme. On détermine si la direction de la ligne à chaque point d'intersection est vers le haut ou vers le bas. Le nombre de boucles est déterminé en additionnant les directions observées à chaque intersection. Si ce nombre est différent de zéro, le point se trouve à l’intérieur de la forme. Ce mode de remplissage peut également, dans la plupart des cas, être considéré comme l’intersection de formes fermées. Ce mode est le mode par défaut. |
QCanvasPainter::FillRule::EvenOdd | 1 | Le tracé est rempli selon la règle de remplissage « pair-impair ». Avec cette règle, on détermine si un point se trouve à l’intérieur de la forme en procédant comme suit : tracez une ligne horizontale partant du point vers un emplacement situé à l’extérieur de la forme, puis comptez le nombre d’intersections. Si ce nombre est impair, le point se trouve à l’intérieur de la forme. |
Cette énumération a été introduite dans Qt 6.12.
Voir également fill().
enum class QCanvasPainter::ImageFlag
flags QCanvasPainter::ImageFlags
Cette énumération définit des indicateurs liés aux images. À utiliser avec la fonction addImage() pour définir ces indicateurs.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::ImageFlag::GenerateMipmaps | 1 << 0 | Définissez cette valeur pour générer des mipmaps pour l'image. Les mipmaps doivent être utilisées lorsque l'on souhaite obtenir un rendu plus lisse pour les images redimensionnées à une taille inférieure à la taille d'origine. |
QCanvasPainter::ImageFlag::RepeatX | 1 << 1 | À utiliser avec le motif d'image pour répéter l'image selon la coordonnée X. |
QCanvasPainter::ImageFlag::RepeatY | 1 << 2 | À utiliser avec le motif d’image pour répéter l’image selon la coordonnée Y. |
QCanvasPainter::ImageFlag::Repeat | RepeatX | RepeatY | À utiliser avec le motif d'image pour répéter l'image selon les deux coordonnées. |
QCanvasPainter::ImageFlag::FlipY | 1 << 3 | Inverse l'image dans la direction Y lors du rendu. |
QCanvasPainter::ImageFlag::Premultiplied | 1 << 4 | Les données d'image comportent un alpha pré-multiplié. |
QCanvasPainter::ImageFlag::Nearest | 1 << 5 | L’interpolation de l’image est de type « Nearest » (plus proche) au lieu de « Linear » (linéaire) |
Le type `ImageFlags` est un `typedef` pour ` QFlags<ImageFlag>`. Il stocke une combinaison OR de valeurs `ImageFlag`.
enum class QCanvasPainter::LineCap
La propriété LineCap permet de définir la manière dont l'extrémité de la ligne (cap) est dessinée.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::LineCap::Butt | 0 | (par défaut) Extrémité carrée de la ligne qui ne recouvre pas le point d'extrémité de la ligne. |
QCanvasPainter::LineCap::Round | 1 | Extrémité de ligne arrondie. |
QCanvasPainter::LineCap::Square | 2 | Extrémité carrée qui recouvre le point d'extrémité et s'étend au-delà de celui-ci de la moitié de la largeur de la ligne. |
Voir aussi setLineCap().
enum class QCanvasPainter::LineJoin
La propriété `LineJoin` permet de définir la manière dont sont tracées les jonctions entre deux lignes reliées.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::LineJoin::Round | 0 | L'arc de cercle entre les deux lignes est rempli. |
QCanvasPainter::LineJoin::Bevel | 1 | L'encoche triangulaire entre les deux lignes est remplie. |
QCanvasPainter::LineJoin::Miter | 2 | (par défaut) Les bords extérieurs des lignes sont prolongés pour se rejoindre en formant un angle, et cette zone est remplie. |
Voir aussi setLineJoin() et setMiterLimit().
enum class QCanvasPainter::PathConnection
Dans certaines méthodes de dessin, la fonction PathConnection sert à indiquer si le nouveau tracé doit être relié au dernier point du tracé précédent.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::PathConnection::NotConnected | 0 | Aucune ligne n'est tracée entre le dernier point du tracé précédent et le premier point du tracé actuel. |
QCanvasPainter::PathConnection::Connected | 1 | Le dernier point du tracé précédent sera relié au premier point du tracé actuel. |
Voir aussi arc().
enum class QCanvasPainter::PathWinding
La propriété « PathWinding » sert à définir le sens de tracé d'un chemin. Ce sens permet de déterminer si un sous-chemin est plein ou s'il s'agit d'une ouverture dans le chemin.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::PathWinding::CounterClockWise | 0 | (par défaut) Enroulement dans le sens antihoraire pour les formes pleines. |
QCanvasPainter::PathWinding::ClockWise | 1 | Enroulement dans le sens des aiguilles d’une montre pour les trous. |
Voir aussi setPathWinding().
enum class QCanvasPainter::TextAlign
La propriété `TextAlign` sert à définir l'alignement horizontal du texte.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::TextAlign::Left | 0 | Aligne horizontalement le côté gauche du texte sur la position spécifiée. |
QCanvasPainter::TextAlign::Right | 1 | Aligne horizontalement le côté droit du texte sur la position spécifiée. |
QCanvasPainter::TextAlign::Center | 2 | Aligne le centre du texte horizontalement sur la position spécifiée. |
QCanvasPainter::TextAlign::Start | 3 | (par défaut) Le texte est aligné au début normal de la ligne (aligné à gauche pour les langues s'écrivant de gauche à droite, aligné à droite pour celles s'écrivant de droite à gauche). |
QCanvasPainter::TextAlign::End | 4 | Le texte est aligné à la fin normale de la ligne (aligné à droite pour les langues s'écrivant de gauche à droite, aligné à gauche pour les langues s'écrivant de droite à gauche). |
Voir également setTextAlign(), setTextDirection() et fillText().
enum class QCanvasPainter::TextBaseline
La propriété « TextBaseline » permet de définir l'alignement vertical du texte (par rapport à la ligne de base).
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::TextBaseline::Top | 0 | Aligne verticalement le haut du texte sur la position spécifiée. |
QCanvasPainter::TextBaseline::Hanging | 1 | Aligne verticalement la ligne de base suspendue du texte sur la position spécifiée. |
QCanvasPainter::TextBaseline::Middle | 2 | Aligne le milieu du texte verticalement sur la position spécifiée. |
QCanvasPainter::TextBaseline::Alphabetic | 3 | (par défaut) Aligne verticalement la ligne de base du texte sur la position spécifiée. |
QCanvasPainter::TextBaseline::Bottom | 4 | Aligne verticalement le bas du texte à la position spécifiée. |
Voir aussi setTextBaseline() et fillText().
enum class QCanvasPainter::TextDirection
La propriété TextDirection permet de définir l'alignement horizontal du texte.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::TextDirection::LeftToRight | 0 | Le texte est aligné de gauche à droite. |
QCanvasPainter::TextDirection::RightToLeft | 1 | La direction du texte est de droite à gauche. |
QCanvasPainter::TextDirection::Inherit | 2 | (par défaut) Le sens d'écriture est hérité de la propriété layoutDirection de QGuiApplication. Voir https://doc.qt.io/qt-6/qguiapplication.html#layoutDirection-prop. |
QCanvasPainter::TextDirection::Auto | 3 | La direction du texte est détectée automatiquement à partir de la chaîne de texte. Voir QString::isRightToLeft(). Remarque : comme cela nécessite d’analyser le texte, cette option est potentiellement plus lente que les autres. |
Voir également setTextDirection(), setTextAlign() et fillText().
enum class QCanvasPainter::WrapMode
WrapMode permet de définir la manière dont le texte est réparti sur plusieurs lignes.
| Constante | Valeur | Description |
|---|---|---|
QCanvasPainter::WrapMode::NoWrap | 0 | (par défaut) Aucun retour à la ligne n'est effectué. Si le texte ne contient pas suffisamment de sauts de ligne, la largeur du contenu (contentWidth) dépassera la largeur définie. |
QCanvasPainter::WrapMode::Wrap | 1 | Si possible, le retour à la ligne s'effectue à la fin d'un mot ; sinon, il s'effectue à l'endroit approprié sur la ligne, même au milieu d'un mot. |
QCanvasPainter::WrapMode::WordWrap | 2 | Le retour à la ligne s’effectue uniquement à la fin d’un mot. Si un mot est trop long, la largeur du contenu dépassera la largeur définie. |
QCanvasPainter::WrapMode::WrapAnywhere | 3 | Le retour à la ligne s'effectue à n'importe quel endroit de la ligne, même au milieu d'un mot. |
Voir également setTextWrapMode() et fillText().
Documentation des fonctions membres
QCanvasPainter::QCanvasPainter()
Crée un « painter ».
[noexcept] QCanvasPainter::~QCanvasPainter()
Il détruit le peintre.
qsizetype QCanvasPainter::activeImageCount() const
Renvoie le nombre d'objets « QCanvasImage » actifs enregistrés auprès de cette instance de ` QCanvasPainter`. Ce nombre inclut également les images créées en interne pour ` gradients`.
QCanvasImage Les objets créés par l'enregistrement d'instances de ` QCanvasOffscreenCanvas ` ou les textures gérées en externe ne sont pas pris en compte par cette fonction.
Voir également activeImageMemoryUsage(), addImage() et removeImage().
qsizetype QCanvasPainter::activeImageMemoryUsage() const
Renvoie une estimation, en kilo-octets, de la mémoire utilisée par les données d’image (pixels) de toutes les instances actives de ` QCanvasImage ` pour ce « peintre », qui ont été créées par la surcharge de la méthode ` addImage()` prenant un ` QImage`. Cela inclut également les données provenant des images créées en interne pour ` gradients`.
QCanvasPainter ne conserve pas de copies des données d’ QImage s côté CPU une fois que addImage() a renvoyé une valeur. Par conséquent, le résultat de cette fonction est une approximation de la mémoire GPU utilisée pour les textures.
Remarque : cette valeur n’est qu’une estimation basée sur le format et les dimensions de l’image. Qt n’a aucune connaissance de la manière dont les données des textures sont stockées et organisées en mémoire côté GPU.
Les canevas hors écran et les textures gérées en externe enregistrées via les autres surcharges de la fonction ` addImage()` ne sont pas pris en compte par cette fonction.
Pour chaque ` QCanvasImage` valide, la taille individuelle en octets peut toujours être interrogée en appelant ` sizeInBytes()`. Cette fonction renvoie des résultats valides même lorsque l’` QCanvasImage ` a été créé à partir d’un ` QCanvasOffscreenCanvas ` ou d’un ` QRhiTexture`, mais elle ne prend pas en compte les données de mipmap ni de multisample.
Voir également activeImageCount(), addImage() et removeImage().
QCanvasImage QCanvasPainter::addImage(const QImage &image, QCanvasPainter::ImageFlags flags = {})
Ajoute l'image, dont l'flags est accessible au peintre en tant que texture. Renvoie l'QCanvasImage contenant l'identifiant de la texture et d'autres informations sur l'image. L'QCanvasImage renvoyé peut ensuite être utilisé avec les méthodes drawImage et QCanvasImagePattern. Après l'appel de cette méthode, il n'est pas nécessaire de conserver en mémoire l'image QImage .
L'appel avec le même image est une opération peu coûteuse, car on s'attend à un accès au cache.
Lors de l’optimisation, il faut veiller à n’appeler addImage() qu’une seule fois. Cela n’est pas toujours suffisant, selon la conception de l’application. Par exemple, si les ressources graphiques sous-jacentes sont perdues, par exemple parce que le « painter » est associé en arrière-plan à une nouvelle QRhi suite au déplacement d’un widget vers un nouveau niveau supérieur, alors l’appel de cette fonction est essentiel pour recréer les textures graphiques natives à partir de image.
Voir également drawImage() et removeImage().
QCanvasImage QCanvasPainter::addImage(QRhiTexture *texture, QCanvasPainter::ImageFlags flags = {})
Ajoute texture avec flags, disponible pour le peintre en tant que texture. L'QCanvasImage renvoyé peut être utilisé avec drawImage et QCanvasImagePattern.
Remarque : la propriété de texture n’ est pas prise en charge.
Il s'agit d'une fonction surchargée.
Voir également drawImage() et removeImage().
QCanvasImage QCanvasPainter::addImage(const QCanvasOffscreenCanvas &canvas, QCanvasPainter::ImageFlags flags = {})
Enregistre canvas auprès de flags auprès du « painter » afin qu’il soit disponible en tant qu’image. L’objet QCanvasImage renvoyé peut être utilisé avec drawImage et QCanvasImagePattern.
Remarque : ` canvas ` continue de gérer les ressources graphiques natives sous-jacentes, ce qui signifie que ` removeImage()` ne rend pas ` canvas ` invalide.
Il s'agit d'une fonction surchargée.
Voir également drawImage() et removeImage().
void QCanvasPainter::addPath(const QPainterPath &path)
Ajoute path au chemin d'accès actuel.
Remarque : QCanvasPainter utilise par défaut la règle de remplissage « NonZero » (Qt::WindingFill), tandis que QPainterPath utilise par défaut « Qt::OddEvenFill ». Pensez donc à modifier la règle de remplissage si nécessaire, par exemple en utilisant setFillRule().
Remarque : cette méthode est principalement disponible à des fins de compatibilité avec QPainter et QPainterPath. Elle n’améliore pas les performances par rapport au tracé direct du chemin à l’aide des méthodes QCanvasPainter.
void QCanvasPainter::addPath(const QCanvasPath &path, const QTransform &transform = QTransform())
Ajoute path au chemin actuel, en utilisant éventuellement transform pour modifier les points du chemin. Lorsque transform n'est pas fourni (ou qu'il s'agit de la matrice identité), cette opération est très rapide car elle réutilise les données du chemin.
![]() | |
void QCanvasPainter::addPath(const QCanvasPath &path, qsizetype start, qsizetype count, const QTransform &transform = QTransform())
Ajoute path au chemin actuel, en partant de la commande située à l'adresse start et en incluant count nombre de commandes. Il est possible d'utiliser transform pour modifier les points du chemin. La plage comprise entre start et count est vérifiée, afin que les commandes ne soient pas consultées au-delà de QCanvasPath::commandsSize(). Si le chemin ne doit pas se poursuivre à partir de la position actuelle, appelez d'abord moveTo(), par exemple avec path.positionAt(start - 1).
![]() | |
void QCanvasPainter::arc(qreal centerX, qreal centerY, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
Crée un nouveau sous-trajet en forme d’arc de cercle. Le centre de l’arc se trouve à l’adresse centerX, centerY, avec radius, et l’arc est tracé à partir de l’angle a0 jusqu’à a1, et balayé selon direction (ClockWise ou CounterClockWise). Lorsque connection vaut NotConnected, l’arc n’ajoute pas de ligne reliant la position du trajet précédent au début de l’arc. Les angles sont spécifiés en radians.
![]() | |
Remarque : alors que le contexte 2D HTML canvas utilise la fonction arc() pour dessiner des cercles, avec QCanvasPainter, il est recommandé d’utiliser circle() ou ellipse() à cette fin.
void QCanvasPainter::arc(QPointF centerPoint, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
Crée un nouveau sous-trajet en forme d’arc de cercle. Le centre de l’arc se trouve à l’adresse centerPoint, avec radius, et l’arc est tracé de l’angle a0 à a1, et balayé selon direction (ClockWise ou CounterClockWise). Lorsque connection vaut NotConnected, l’arc n’ajoute pas de ligne entre la position du tracé précédent et le début de l’arc. Les angles sont spécifiés en radians.
Remarque : alors que le contexte 2D HTML canvas utilise la fonction arc() pour dessiner des cercles, avec QCanvasPainter, il est recommandé d'utiliser circle() ou ellipse() à cette fin.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::arcTo(qreal x1, qreal y1, qreal x2, qreal y2, qreal radius)
Ajoute un segment d'arc au niveau du coin défini par le dernier point du tracé, ainsi que deux points spécifiés (x1, y1 et x2, y2) avec radius. L'arc est automatiquement relié au dernier point du tracé par une ligne droite si nécessaire.
![]() | |
void QCanvasPainter::arcTo(QPointF controlPoint1, QPointF controlPoint2, qreal radius)
Ajoute un segment d'arc à l'angle défini par le dernier point du tracé et deux points spécifiés (controlPoint1 et controlPoint2) avec radius. L'arc est automatiquement relié au dernier point du tracé par une ligne droite si nécessaire.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::beginHoleSubPath()
Créer un sous-chemin « hole ». Cela revient à utiliser la commande setPathWinding(QCanvasPainter::PathWinding::ClockWise))
![]() | |
Voir également beginSolidSubPath().
void QCanvasPainter::beginPath()
Commence à tracer un nouveau chemin tout en effaçant le chemin actuel.
void QCanvasPainter::beginSolidSubPath()
Lancer un sous-chemin solide. Cela revient à setPathWinding(QCanvasPainter::PathWinding::CounterClockWise))
Voir également beginHoleSubPath().
void QCanvasPainter::bezierCurveTo(qreal cp1X, qreal cp1Y, qreal cp2X, qreal cp2Y, qreal x, qreal y)
Ajoute un segment de Bézier cubique partant du dernier point du tracé, passant par deux points de contrôle (cp1X, cp1Y et cp2X, cp2Y) et aboutissant au point spécifié (x, y).
![]() | |
void QCanvasPainter::bezierCurveTo(QPointF controlPoint1, QPointF controlPoint2, QPointF endPoint)
Ajoute un segment de Bézier cubique partant du dernier point du tracé, passant par deux points de contrôle (controlPoint1 et controlPoint2) et aboutissant au point spécifié endPoint.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::circle(qreal centerX, qreal centerY, qreal radius)
Crée un nouveau sous-tracé circulaire centré en ( centerX, centerY) et d'un radius.
![]() | |
void QCanvasPainter::circle(QPointF centerPoint, qreal radius)
Crée un nouveau sous-trajet circulaire centré sur centerPoint avec radius.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::cleanupResources()
Programme la suppression des textures inutilisées du cache.
De plus, d'autres caches et pools peuvent être réduits lors de l'appel de cette fonction, afin de minimiser l'utilisation de la mémoire. Cela peut potentiellement entraîner des appels de dessin plus coûteux par la suite.
void QCanvasPainter::clearRect(qreal x, qreal y, qreal width, qreal height)
Efface les pixels d'une zone rectangulaire en remplissant de noir transparent le rectangle défini par x, y, width, height. Comme l'effacement ne nécessite pas de fusion, il peut s'avérer plus rapide que fillRect().
![]() | |
void QCanvasPainter::clearRect(const QRectF &rect)
Efface les pixels d'une zone rectangulaire en remplissant le rectangle spécifié par ` rect ` avec du noir transparent. Il s'agit d'une méthode surchargée utilisant ` QRectF`.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::closePath()
Ferme le sous-trajet actuel à l'aide d'un segment de droite. Cela revient à utiliser « lineTo([point de départ]) » comme dernier élément du trajet.
QCanvasOffscreenCanvas QCanvasPainter::createCanvas(QSize pixelSize, int sampleCount = 1, QCanvasOffscreenCanvas::Flags flags = {})
Renvoie un nouveau canevas hors écran avec les paramètres pixelSize, sampleCount et flags fournis.
La taille du canevas est spécifiée en pixels. Les propriétés pixelSize, sampleCount et flags sont ensuite immuables. Pour obtenir un canevas avec une taille, un nombre d’échantillons ou des indicateurs différents, créez-en un nouveau.
Pour cibler un canevas hors écran avec des commandes de dessin, appelez la surcharge appropriée de ` QCanvasRhiPaintDriver::beginPaint()` lorsque vous utilisez l’API de bas niveau, ou ` QCanvasPainterWidget::beginCanvasPainting()` ou ` QCanvasPainterItemRenderer::beginCanvasPainting()` lorsque vous utilisez les classes de widgets de commodité ou d’éléments ` Qt Quick `.
Normalement, le contenu du canevas est effacé lors du dessin. Pour désactiver cette fonction, passez PreserveContents dans flags.
Pour demander un rendu multi-échantillonnage sur le canevas (anticrénelage multi-échantillonnage, MSAA), définissez un nombre d’échantillons supérieur à 1, par exemple 4 ou 8. La conservation du contenu du canevas entre les passes de rendu n’est toutefois pas prise en charge lorsque le multi-échantillonnage est activé, et l’indicateur ` PreserveContents ` ne fonctionnera pas dans ce cas.
Remarque : un canevas hors écran s'appuie sur une texture indépendante de la cible de rendu principale, et le rendu vers celui-ci s'effectue toujours avec un facteur d'échelle (rapport de pixels du périphérique) de 1. Par exemple, pour créer un canevas correspondant aux dimensions de rendu réelles d'un ` QCanvasPainterWidget`, transmettez ` size() * devicePixelRatio() ` à ` pixelSize`, car l'size() ion du widget correspond uniquement à la taille logique, sans inclure le facteur d'échelle.
void QCanvasPainter::destroyCanvas(QCanvasOffscreenCanvas &canvas)
Détruit les ressources associées à canvas. canvas devient alors null canvas.
Le « painter » effectue cette opération automatiquement lors de sa destruction. Par conséquent, l'appel de cette fonction n'est nécessaire que si l'on souhaite libérer immédiatement les ressources associées.
void QCanvasPainter::drawBoxShadow(const QCanvasBoxShadow &shadow)
Dessine une boîte shadow. L'ombre sera dessinée selon la position, la taille, la couleur, le flou, etc. définis par shadow. Il n'est pas nécessaire d'appeler beginPath() avant cette méthode.
Remarque : pour visualiser la zone couverte par drawBoxShadow(), définissez la variable d'environnement QCPAINTER_DEBUG_SHADOW_RECT.
![]() | |
Voir également QCanvasBoxShadow.
void QCanvasPainter::drawImage(const QCanvasImage &image, qreal x, qreal y)
Afficher image sur x, y, à sa taille par défaut.
![]() | |
Voir également addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &destinationRect)
Affichez image en respectant la position et la taille de destinationRect.
Il s'agit d'une fonction surchargée.
Voir également addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &sourceRect, const QRectF &destinationRect)
Dessiner image avec la position et la taille de destinationRect, à partir de la zone sourceRect de l'image.
![]() | |
Il s'agit d'une fonction surchargée.
Voir également addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, qreal x, qreal y, qreal width, qreal height)
Afficher image sur x, y, ainsi que sur les pages width et height.
![]() | |
Il s'agit d'une fonction surchargée.
Voir également addImage().
void QCanvasPainter::ellipse(qreal centerX, qreal centerY, qreal radiusX, qreal radiusY)
Crée un nouveau sous-trajet en forme d'ellipse centré en ( centerX, centerY) avec radiusX et radiusY.
![]() | |
void QCanvasPainter::ellipse(const QRectF &rect)
Crée un nouveau sous-tracé en forme d'ellipse dans « rect ». Cette ellipse recouvrira la zone « rect ».
![]() | |
Il s'agit d'une fonction surchargée.
void QCanvasPainter::ellipse(QPointF centerPoint, qreal radiusX, qreal radiusY)
Crée un nouveau sous-trajet en forme d'ellipse centré à l'centerPoint, avec les coordonnées radiusX et radiusY.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::fill()
Remplit le tracé actuel avec le style de remplissage et la règle de remplissage actuels.
![]() | |
Voir également setFillStyle() et setFillRule().
[since 6.12] void QCanvasPainter::fill(QCanvasPainter::FillRule fillRule)
Remplit le tracé actuel avec le style de remplissage actuel et la règle de remplissage fillRule.
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
Voir également setFillStyle() et setFillRule().
void QCanvasPainter::fill(const QCanvasPath &path, int pathGroup = -1)
Remplit l'objet « path » avec le style et la règle de remplissage actuels, et l'intègre à l'objet « pathGroup ». Le remplissage via « QCanvasPath » est optimal lorsque le tracé contient davantage de commandes et est essentiellement statique.
Lorsque pathGroup est défini sur -1, le tracé ne sera pas mis en cache côté GPU. Il s’agit du comportement par défaut. Pour demander la mise en cache des données de tracé, transmettez une valeur égale ou supérieure à 0. Vous trouverez plus d’informations sur l’utilisation des groupes de cache de tracés dans la documentation QCanvasPath.
Il n’est pas nécessaire d’appeler ` beginPath()` avant cette méthode.
![]() | |
Il s’agit d’une fonction surchargée.
Voir également setFillStyle(), setFillRule() et removePathGroup().
[since 6.12] void QCanvasPainter::fill(const QCanvasPath &path, QCanvasPainter::FillRule fillRule, int pathGroup = -1)
Remplit l'path e avec le style et la règle de remplissage actuels fillRule
Il s'agit d'une fonction surchargée.
Cette fonction a été introduite dans Qt 6.12.
void QCanvasPainter::fillRect(qreal x, qreal y, qreal width, qreal height)
Dessine un rectangle rempli à l'emplacement spécifié ( x, y) avec les dimensions width, height.
Remarque : cette fonction est fournie à titre de commodité. Lorsque vous souhaitez remplir plusieurs rectangles, il est préférable d’utiliser rect().
![]() | |
void QCanvasPainter::fillRect(const QRectF &rect)
Dessine un rectangle rempli dans ` rect`. Il s'agit d'une méthode surchargée utilisant ` QRectF`.
Remarque : cette méthode est fournie à titre de commodité. Lorsque vous souhaitez remplir plusieurs rectangles, préférez utiliser ` rect()`.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::fillText(const QString &text, qreal x, qreal y, qreal maxWidth = 0)
Dessine une chaîne de caractères de type « text » à l'emplacement spécifié ( x, y), en utilisant les valeurs actuelles de textAlign et textBaseline. Pour que le texte s'affiche sur plusieurs lignes, définissez le mode de retour à la ligne à l'aide de la fonction setTextWrapMode() en choisissant une valeur autre que la valeur par défaut NoWrap. Le paramètre facultatif maxWidth prend par défaut la valeur 0. Cela signifie que lorsque, par exemple, WordWrap a été défini, le texte est renvoyé à la ligne à chaque mot. Définissez le paramètre maxWidth sur la largeur de ligne souhaitée en pixels.
![]() | |
Voir également setTextAlign(), setTextBaseline() et setTextWrapMode().
void QCanvasPainter::fillText(const QString &text, const QRectF &rect)
Dessine la chaîne text à l'intérieur de rect, en utilisant les valeurs actuelles de textAlign et textBaseline. La largeur du paramètre rect est utilisée comme maxWidth.
Il s’agit d’une méthode surchargée utilisant ` QRectF`. Il est souvent utile de définir la ligne de base du texte sur ` TextBaseline::Top ` ou ` TextBaseline::Middle ` lors du tracé de texte avec cette méthode.
![]() | |
Il s’agit d’une fonction surchargée.
Voir également setTextAlign(), setTextBaseline() et setTextWrapMode().
void QCanvasPainter::fillText(const QString &text, QPointF point, qreal maxWidth = 0)
Affiche la chaîne « text » à l’ point spécifiée, en utilisant les paramètres actuels textAlign et textBaseline. Pour que le texte s’affiche sur plusieurs lignes, définissez le mode de retour à la ligne à l’aide de la fonction setTextWrapMode() en choisissant une valeur différente de la valeur par défaut « NoWrap ». Le paramètre facultatif « maxWidth » prend par défaut la valeur « 0 ». Cela signifie que lorsque, par exemple, la valeur « WordWrap » a été définie, le texte passe à la ligne à chaque mot. Définissez le paramètre ` maxWidth ` sur la largeur de ligne souhaitée en pixels.
Il s’agit d’une méthode surchargée utilisant QPointF.
Il s'agit d'une fonction surchargée.
Voir également setTextAlign(), setTextBaseline() et setTextWrapMode().
QTransform QCanvasPainter::getTransform() const
Renvoie la transformation actuelle.
void QCanvasPainter::lineTo(qreal x, qreal y)
Ajoute un segment de droite reliant le dernier point du tracé au point ( x, y).
![]() | |
void QCanvasPainter::lineTo(QPointF point)
Ajoute un segment de droite reliant le dernier point du tracé à l'point.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::moveTo(qreal x, qreal y)
Crée un nouveau sous-chemin dont le premier point est ( x, y).
void QCanvasPainter::moveTo(QPointF point)
Lance un nouveau sous-chemin dont le premier point est point.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::quadraticCurveTo(qreal cpX, qreal cpY, qreal x, qreal y)
Ajoute un segment de Bézier quadratique partant du dernier point du tracé, passant par un point de contrôle (cpX, cpY) et aboutissant au point spécifié (x, y).
![]() | |
void QCanvasPainter::quadraticCurveTo(QPointF controlPoint, QPointF endPoint)
Ajoute un segment de Bézier quadratique reliant le dernier point du tracé, en passant par un point de transition ( controlPoint ), au point de destination ( endPoint) spécifié.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::rect(qreal x, qreal y, qreal width, qreal height)
Crée un nouveau sous-trajet de forme rectangulaire à la position x, y, de taille width, height.
![]() | |
void QCanvasPainter::rect(const QRectF &rect)
Crée un nouveau sous-trajet de forme rectangulaire à l'adresse rect. Il s'agit d'une méthode surchargée utilisant QRectF.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::removeImage(const QCanvasImage &image)
Libère les ressources associées à ` image ` et supprime l'image du « painter ».
Remarque : il n'est généralement pas nécessaire d'appelercette fonction , car les ressources telles que les textures sont de toute façon libérées dans le destructeur du « painter ». Cette fonction est utile lorsqu'il est nécessaire de réduire l'utilisation de la mémoire en raison d'un grand nombre d'images, dont certaines ne sont plus utilisées.
Remarque : les imagessupprimées ne peuvent plus être utilisées dans les opérations de peinture.
Remarque : les ressources telles que les textures créées avec l’API 3D sous-jacente peuvent ne pas être libérées immédiatement. Ces opérations peuvent être reportées aux images suivantes, généralement lorsque cet QCanvasPainter recommence à dessiner après que l’ensemble actif d’appels de dessin a été soumis.
Voir également ` addImage()`.
void QCanvasPainter::removePathGroup(int pathGroup)
Supprime l'pathGroup du cache du peintre. L'appel de ` fill()` ou ` stroke()` pour ` pathGroup ` après cette opération régénérera le chemin dans le cache du groupe.
Remarque : il n’est normalement pas nécessaire d’appelercette méthode , car les chemins sont supprimés dans le destructeur du peintre. Ne l’utilisez que pour réduire l’utilisation de la mémoire lorsque pathGroup n’est plus nécessaire ou, par exemple, lorsque le chemin contient beaucoup moins de commandes qu’auparavant et que la taille du tampon doit être réduite.
Voir également fill() et stroke().
void QCanvasPainter::reset()
Réinitialise l'état actuel du peintre aux valeurs par défaut.
Cela inclut les styles de trait et de remplissage ainsi que les propriétés associées, la matrice de transformation, la zone de découpe, les paramètres liés au texte, les propriétés de composition, la pile d'états de dessin et les paramètres d'anticrénelage.
Remarque : cette méthode diffère de la méthode reset() du contexte 2D HTML Canvas en ce qu’elle n’efface pas visuellement les tampons du canevas.
Remarque : les valeurs de ` setWindingEnforce()` et ` setHighQualityStroking()` ne sont pas modifiées.
![]() | |
Voir également save() et restore().
void QCanvasPainter::resetClipping()
Réinitialise et désactive l'écrêtage.
Voir aussi setClipRect().
void QCanvasPainter::resetTransform()
Réinitialise la transformation actuelle pour qu'elle corresponde à une matrice identité.
void QCanvasPainter::restore()
Affiche et restaure l'état de rendu actuel. L'état précédemment enregistré sera donc restauré. Si la fonction save() n'a pas été appelée et que la pile d'états est vide, l'appel de cette fonction n'a aucun effet.
Voir également save().
void QCanvasPainter::rotate(qreal angle)
Fait pivoter le système de coordonnées actuel dans le sens des aiguilles d'une montre d'un angle de angle.
L'angle est exprimé en radians. Utilisez la fonction qDegreesToRadians() pour convertir les degrés en radians.
![]() | |
void QCanvasPainter::roundRect(qreal x, qreal y, qreal width, qreal height, qreal radius)
Crée un nouveau sous-tracé en forme de rectangle arrondi à la position x, y avec les dimensions width, height. L'arrondi des coins sera de radius.
![]() | |
void QCanvasPainter::roundRect(const QRectF &rect, qreal radius)
Crée un nouveau sous-trajet en forme de rectangle arrondi à l'adresse rect avec des coins définis par radius. Il s'agit d'une méthode surchargée utilisant QRectF.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::roundRect(const QRectF &rect, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft)
Crée un nouveau sous-tracé en forme de rectangle arrondi à l'adresse rect. Le niveau d'arrondi des coins peut varier d'un coin à l'autre, avec les paramètres suivants : radiusTopLeft, radiusTopRight, radiusBottomRight, radiusBottomLeft.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::roundRect(qreal x, qreal y, qreal width, qreal height, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft)
Crée un nouveau sous-trajet en forme de rectangle arrondi à la position x, y avec les dimensions width, height. L'arrondi des coins peut varier d'un coin à l'autre, avec les valeurs radiusTopLeft, radiusTopRight, radiusBottomRight, radiusBottomLeft.
![]() | |
Il s'agit d'une fonction surchargée.
void QCanvasPainter::save()
Ajoute et enregistre l'état de rendu actuel dans une pile d'états. Il faut utiliser la méthode correspondante restore() pour restaurer cet état.
![]() | |
Voir également restore().
void QCanvasPainter::scale(qreal scale)
Mise à l'échelle du système de coordonnées actuel selon le rapport scale. Les coordonnées x et y sont mises à l'échelle de manière uniforme.
![]() | |
void QCanvasPainter::scale(qreal scaleX, qreal scaleY)
Redimensionne le système de coordonnées actuel selon les valeurs scaleX et scaleY.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::setAntialias(qreal antialias)
Définit le niveau d'anticrénelage actuel à antialias en pixels. Un anticrénelage plus important permet un rendu plus lisse. Cela n'affecte que le remplissage et le tracé, et non les images ou les textes. La valeur par défaut est 1.0 et la valeur maximale est 10.0.
L'anticrénelage peut être modifié pour chaque tracé ; il peut donc être défini avant chaque trait ou remplissage. Pour désactiver l'anticrénelage et réduire le coût de rendu, définissez l'anticrénelage sur 0.
![]() | |
Voir également setTextAntialias().
void QCanvasPainter::setClipRect(qreal x, qreal y, qreal width, qreal height)
Définit le rectangle de découpe actuel sur (x, y, width, height). Le rectangle de découpe est transformé par la transformation actuelle.
Remarque : le découpage a un certain coût en termes de performances et ne doit être utilisé qu’en cas de nécessité.
![]() | |
Voir également resetClipping().
void QCanvasPainter::setClipRect(const QRectF &rect)
Définit le rectangle de découpe actuel sur rect. Le rectangle de découpe est transformé par la transformation actuelle.
Remarque : le découpage a un certain coût en termes de performances et ne doit être utilisé qu’en cas de nécessité.
Il s'agit d'une fonction surchargée.
Voir également resetClipping().
[since 6.12] void QCanvasPainter::setFillRule(QCanvasPainter::FillRule fillRule)
Définit la règle de remplissage des chemins sur « fillRule ». Cette valeur s'applique à tous les appels à la fonction fill() effectués après la définition de la règle. La règle de remplissage par défaut est QCanvasPainter::FillRule::NonZero
![]() | |
Cette fonction a été introduite dans Qt 6.12.
void QCanvasPainter::setFillStyle(QColor color)
Définit le style de remplissage sur une couleur unie color. Le style de remplissage par défaut est le noir uni (0, 0, 0, 1).
![]() | |
void QCanvasPainter::setFillStyle(const QCanvasBrush &brush)
Définit le style de remplissage sur « brush ». Le style de remplissage par défaut est le noir uni (0, 0, 0, 1).
![]() | |
Il s'agit d'une fonction surchargée.
void QCanvasPainter::setFont(const QFont &font)
Définit la police « font » comme police actuellement active.
void QCanvasPainter::setGlobalAlpha(qreal alpha)
Définit la valeur globale de l'alpha (transparence) sur alpha. Cette valeur d'alpha s'applique à toutes les formes affichées. Les tracés déjà transparents deviendront également proportionnellement plus transparents. La valeur de l'alpha doit être comprise entre 0,0 (entièrement transparent) et 1,0 (entièrement opaque). Par défaut, l'alpha est défini sur 1.0.
![]() | |
void QCanvasPainter::setGlobalBrightness(qreal value)
Définit la luminosité globale à value. Cette luminosité s'applique à toutes les formes affichées. Une valeur de 0 rendra l'affichage entièrement noir. La valeur peut également être supérieure à 1,0 pour augmenter la luminosité. Par défaut, la luminosité est de 1.0.
![]() | |
void QCanvasPainter::setGlobalCompositeOperation(QCanvasPainter::CompositeOperation operation)
Définit le mode d'opération composite global sur « operation ». Ce mode s'applique à toutes les opérations de dessin. Le mode par défaut est « QCanvasPainter::CompositeOperation::SourceOver ».
Remarque : pour fonctionner correctement, les modes composites nécessitent l'activation de « alphaBlending » et l'utilisation d'un fond transparent pour le canevas.
![]() | |
void QCanvasPainter::setGlobalContrast(qreal value)
Définit le contraste global à value. Ce contraste s'applique à toutes les formes affichées. Une valeur de 0 rendra l'affichage entièrement gris (0,5, 0,5, 0,5). La valeur peut également être supérieure à 1,0 pour augmenter le contraste. Par défaut, le contraste est de 1.0.
![]() | |
void QCanvasPainter::setGlobalSaturation(qreal value)
Définit la saturation globale à value. Cette saturation s'applique à toutes les formes affichées. Une valeur de 0 désactive la saturation et rend l'affichage entièrement en niveaux de gris. La valeur peut également être supérieure à 1,0 pour augmenter la saturation. Par défaut, la saturation est de 1.0.
![]() | |
void QCanvasPainter::setHighQualityStroking(bool enabled)
Définit le tracé de haute qualité sur « enabled ». Le réglage sur « true » permet un rendu plus correct dans certains cas peu courants où les tracés se chevauchent et ne présentent pas une opacité totale. L’activation de cette option entraîne une augmentation du coût de rendu. La valeur par défaut est « false ».
![]() | |
void QCanvasPainter::setLineCap(QCanvasPainter::LineCap cap)
Définit la fin de trait sur « cap ». La fin de trait par défaut est « QCanvasPainter::LineCap::Butt ».
![]() | |
void QCanvasPainter::setLineJoin(QCanvasPainter::LineJoin join)
Définit le type de jonction des traits sur « join ». La jonction par défaut est « QCanvasPainter::LineJoin::Miter ».
![]() | |
Voir également setMiterLimit().
void QCanvasPainter::setLineWidth(qreal width)
Définit la largeur des traits à width en pixels. La largeur par défaut est 1.0. Lorsque l'anticrénelage est activé, les largeurs inférieures à un pixel entraînent automatiquement une diminution progressive de l'opacité, ce qui permet d'obtenir un rendu lisse.
![]() | |
Voir aussi stroke().
void QCanvasPainter::setMiterLimit(qreal limit)
Définit la limite de coupe en onglet à limit. La limite de coupe en onglet détermine à quel moment un angle aigu est biseauté. Lorsque la longueur de l'angle dépasse cette limite, une coupe en onglet ( QCanvasPainter::LineJoin::Bevel ) est alors appliquée entre les lignes. Ce paramètre n'a d'effet qu'avec le type de jonction « QCanvasPainter::LineJoin::Miter ». La limite par défaut est 10.0.
![]() | |
Voir également setLineJoin().
void QCanvasPainter::setPathWinding(QCanvasPainter::PathWinding winding)
Définit le sous-trajet actuel « winding » sur « CounterClockWise » (par défaut) ou « ClockWise ». L'option « CounterClockWise » permet de tracer des sous-trajets pleins, tandis que l'option « ClockWise » permet de tracer des trous.
![]() | |
Voir également beginHoleSubPath() et beginSolidSubPath().
void QCanvasPainter::setStrokeStyle(QColor color)
Définit le style de trait sur « color » (couleur unie). Le style de trait par défaut est une couleur noire unie (0, 0, 0, 1).
![]() | |
void QCanvasPainter::setStrokeStyle(const QCanvasBrush &brush)
Définit le style de trait sur « brush ». Le style de trait par défaut est un trait noir continu (0, 0, 0, 1).
![]() | |
Il s'agit d'une fonction surchargée.
void QCanvasPainter::setTextAlign(QCanvasPainter::TextAlign align)
Définit l'alignement horizontal du texte sur « align ». L'alignement par défaut est « QCanvasPainter::TextAlign::Start ».
![]() | |
Voir également setTextBaseline().
void QCanvasPainter::setTextAntialias(qreal antialias)
Définit le niveau actuel d'anticrénelage du texte. La valeur « antialias » correspond à un multiplicateur de l'anticrénelage normal : ainsi, « 0.0 » désactive l'anticrénelage et « 2.0 » le double. La valeur par défaut est 1.0.
Remarque : en raison de la technique d’anticrénelage du texte utilisée (SDF), le niveau maximal d’anticrénelage est assez limité, ce qui a moins d’impact lorsque la taille de la police est petite.
![]() | |
void QCanvasPainter::setTextBaseline(QCanvasPainter::TextBaseline baseline)
Définit l'alignement vertical (ligne de base) du texte sur « baseline ». L'alignement par défaut est « QCanvasPainter::TextBaseline::Alphabetic ».
![]() | |
Voir aussi setTextAlign().
void QCanvasPainter::setTextDirection(QCanvasPainter::TextDirection direction)
Définit le sens d'écriture du texte sur « direction ». Le sens par défaut est « QCanvasPainter::TextDirection::Inherit ».
![]() | |
void QCanvasPainter::setTextLineHeight(qreal height)
Définit l'ajustement de l'interligne en pixels sur height pour le texte en retour à la ligne. L'interligne par défaut est de 0.
![]() | |
void QCanvasPainter::setTextWrapMode(QCanvasPainter::WrapMode wrapMode)
Définit le mode de retour à la ligne sur « wrapMode ». Le mode de retour à la ligne par défaut est « QCanvasPainter::WrapMode::NoWrap ».
![]() | |
void QCanvasPainter::setTransform(const QTransform &transform)
Réinitialise la transformation actuelle et utilise à la place transform.
![]() | |
Voir aussi transform().
void QCanvasPainter::setWindingEnforce(bool enabled)
Définit le sens de défilement des chemins sur « enabled ». En définissant cette option sur « false », vous désactivez l'application du sens de défilement des chemins défini dans la fonction « setPathWinding() ». Cette désactivation permet, par exemple, de créer des trous dans les chemins en ajoutant les points dans le sens des aiguilles d'une montre. Elle peut également améliorer les performances. La valeur par défaut est « true ».
![]() | |
void QCanvasPainter::skew(qreal angleX, qreal angleY = 0.0)
Déforme (cisaille) le système de coordonnées actuel de angleX le long de l'axe X et de angleY le long de l'axe Y. Les angles sont exprimés en radians.
![]() | |
void QCanvasPainter::stroke()
Trace le tracé actuel avec le style de trait actuel.
![]() | |
Voir aussi setStrokeStyle().
void QCanvasPainter::stroke(const QCanvasPath &path, int pathGroup = -1)
Trace le chemin path avec le style de trait actuel et l'intègre dans pathGroup. Le tracé via QCanvasPath est optimal lorsque le chemin contient davantage de commandes et est essentiellement statique.
Lorsque pathGroup est défini sur -1, les données liées au rendu du chemin ne sont pas mises en cache. Il s’agit du comportement par défaut. Pour demander la mise en cache des données du chemin, transmettez une valeur égale ou supérieure à 0. Vous trouverez plus d’informations sur l’utilisation des groupes de cache de chemins dans la documentation relative à QCanvasPath.
Il n’est pas nécessaire d’appeler ` beginPath()` avant cette méthode.
![]() | |
Il s’agit d’une fonction surchargée.
Voir également setStrokeStyle() et removePathGroup().
void QCanvasPainter::strokeRect(qreal x, qreal y, qreal width, qreal height)
Dessine un rectangle avec contour à l'emplacement spécifié ( x, y) et de taille width, height.
Remarque : cette fonction est fournie à titre de commodité. Lorsque vous tracez les contours de plusieurs rectangles, il est préférable d'utiliser rect().
![]() | |
void QCanvasPainter::strokeRect(const QRectF &rect)
Dessine un rectangle avec un contour dans ` rect`. Il s'agit d'une méthode surchargée utilisant ` QRectF`.
Remarque : cette méthode est fournie à titre de commodité. Lorsque vous souhaitez tracer plusieurs rectangles, il est préférable d’utiliser ` rect()`.
Il s'agit d'une fonction surchargée.
QRectF QCanvasPainter::textBoundingBox(const QString &text, qreal x, qreal y, qreal maxWidth = 0) const
Mesure le cadre de délimitation d'une chaîne « text » à l'adresse (x, y).
Pour mesurer un texte sur plusieurs lignes, définissez le mode de retour à la ligne à l’aide de la fonction setTextWrapMode() sur une valeur autre que la valeur par défaut NoWrap. Définissez également le paramètre facultatif maxWidth sur la largeur de ligne souhaitée en pixels.
Renvoie QRectF avec les valeurs [xmin, ymin, width, height]. Les valeurs mesurées sont renvoyées dans l'espace de coordonnées local.
![]() | |
QRectF QCanvasPainter::textBoundingBox(const QString &text, const QRectF &rect) const
Mesure le cadre de délimitation d'une chaîne de caractères de type « text » disponible à l'adresse rect. Renvoie un objet de type « QRectF » contenant les valeurs [xmin, ymin, width, height]. Les valeurs mesurées sont renvoyées dans l'espace de coordonnées local.
Il s'agit d'une fonction surchargée.
QRectF QCanvasPainter::textBoundingBox(const QString &text, QPointF point, qreal maxWidth = 0) const
Mesure le cadre de délimitation d'une chaîne « text » à l'adresse point.
Pour mesurer du texte sur plusieurs lignes, définissez le mode de retour à la ligne à l’aide de la fonction setTextWrapMode() sur une valeur autre que la valeur par défaut NoWrap. Définissez également le paramètre facultatif maxWidth sur la largeur de ligne souhaitée en pixels.
Renvoie QRectF avec les valeurs [xmin, ymin, width, height]. Les valeurs mesurées sont renvoyées dans l'espace de coordonnées local.
Il s'agit d'une fonction surchargée.
void QCanvasPainter::transform(const QTransform &transform)
Multiplie le système de coordonnées actuel par l'transform e spécifiée.
![]() | |
Voir aussi setTransform().
void QCanvasPainter::translate(qreal x, qreal y)
Transforme le système de coordonnées actuel selon les fonctions x et y.
![]() | |
void QCanvasPainter::translate(QPointF point)
Translate le système de coordonnées actuel d'point.
Il s'agit d'une fonction surchargée.
© 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.































































