QCanvasPainter Class
Die Klasse „QCanvasPainter“ führt hardwarebeschleunigtes Zeichnen auf QRhi durch. Mehr...
| Überschrift: | #include <QCanvasPainter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter) target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| Seit: | Qt 6.11 |
Öffentliche Typen
| 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 } |
Öffentliche Funktionen
| 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) |
Ausführliche Beschreibung
Qt Canvas Painter (QCanvasPainter) stellt eine für hardwarebeschleunigtes (GPU) Zeichnen optimierte API bereit. Die API orientiert sich eng an der HTML-Canvas-2D-Context-Spezifikation, die auf Qt C++ portiert wurde. Sie ist zudem von QPainter beeinflusst, verfügt jedoch über eine kompaktere API.
Hier ist ein einfaches Beispiel für die Verwendung von QCanvasPainter zum Erstellen einer runden Schaltfläche.
![]() | |
Hier ist ein weiteres Beispiel für das Zeichnen eines einfachen Diagramms.
![]() | |
Funktionen
Im Großen und Ganzen und hinsichtlich der Namensgebung orientiert sich QCanvasPainter am HTML-Canvas-2D-Kontext (https://html.spec.whatwg.org/multipage/canvas.html#2dcontext). Dadurch ist die API für viele Entwickler vertraut und ermöglicht die einfache Wiederverwendung von bestehendem Canvas-Code. Das Ziel ist jedoch NICHT, zu 100 % mit dem HTML-Canvas kompatibel zu sein. QCanvasPainter verzichtet auf einige Funktionen, um die Handhabung zu vereinfachen, die Leistung auf der hardwarebeschleunigten Grafik-API „ QRhi “ zu steigern und modernen UI-Anforderungen besser gerecht zu werden. Aus diesen Gründen verfügt QCanvasPainter im Vergleich zum HTML-Canvas-2D-Kontext auch über zusätzliche Funktionen.
Hier sind einige der Funktionen, die im Vergleich zu HTML-Canvas zumindest derzeit noch fehlen:
- Clipping: Alle Clipping-Bereiche sind (transformierte) Rechtecke, und das Clipping auf Pfadformen wird nicht unterstützt.
- Strichmuster: Striche sind immer durchgezogene Linien; gestrichelte oder gepunktete Strichmuster werden nicht unterstützt.
- Pfadprüfung: Es gibt keine Methoden „isPointInPath()“ oder „isPointInStroke()“.
- Textumrandung: Es gibt keine Unterstützung für die Umrandung von Text.
- Filter: SVG-Filtereffekte von Canvas werden nicht unterstützt.
- CompositeModes: Die Anzahl der Composite-Modi ist auf 3 begrenzt, die ohne Rendering in zusätzliche Puffer unterstützt werden können.
- Schatten: Integrierte Schattenmethoden werden nicht unterstützt.
Andererseits bietet QCanvasPainter im Vergleich zu HTML-Canvas unter anderem folgende zusätzliche Funktionen:
- Pfadgruppen: QCanvasPainter ermöglicht das Zeichnen auf statische Pfade und das Zwischenspeichern dieser Pfade als Gruppen für eine optimale GPU-Auslastung.
- Einstellbares Antialiasing: Dank Antialiasing an Pfadknoten und SDF-Text-Rendering lässt sich die Pixelanzahl für das Antialiasing frei anpassen, um ein glatteres Zeichnen zu erzielen.
- Box-Verlauf: Neben linearen, radialen und konischen Verläufen unterstützt QCanvasPainter auch den Verlauf für abgerundete Rechtecke („Box-Verlauf“).
- Box-Schatten: QCanvasPainter unterstützt zudem Pinsel vom Typ „CSS box-shadow“. Die Darstellung nutzt einen SDF-Ansatz ähnlich wie Qt Quick RectangularShadow , wodurch sie sehr leistungsstark ist.
- Rastermuster: QCanvasPainter unterstützt QCanvasGridPattern für dynamische Raster- und Balkenmuster.
- Benutzerdefinierte Pinsel: QCanvasPainter ermöglicht zudem das Füllen und Konturieren mit benutzerdefinierten Vertex- und Fragment-Shadern (QCanvasCustomBrush). Diese benutzerdefinierten Pinsel können auch für Text verwendet werden.
- Zeilenumbruch: QCanvasPainter unterstützt den automatischen Zeilenumbruch von Text in mehrere Zeilen mit verschiedenen Umbruchmodi.
- Farbeffekte: Neben „globalAlpha“ unterstützt QCanvasPainter auch globale Einstellungen für Helligkeit, Kontrast und Sättigung.
- Getönte Bilder: QCanvasPainter bietet Unterstützung für Tönungsfarben bei gemalten Bildern und Bildmustern.
QCanvasPainter ist architekturunabhängig und sowohl für Qt Quick - als auch für Qt Widgets -Anwendungen einsetzbar. Tatsächlich ist es sogar ohne diese Bibliotheken nutzbar, lediglich mit QWindow und QRhi. Um QCanvasPainter zu nutzen, verwenden Sie es je nach Architektur Ihrer Anwendung über eine dieser Klassen:
- Qt Quick: Verwenden Sie QCanvasPainterItem und QCanvasPainterItemRenderer.
- Qt Widgets: Verwenden Sie „ QCanvasPainterWidget “.
- QRhi QWindow auf Basis von „Winding“ oder -Puffer außerhalb des Bildschirms: Verwenden Sie und . QRhi QCanvasPainterFactory QCanvasRhiPaintDriver
Regeln für die Umrandung
QCanvasPainter verwendet standardmäßig die Füllregel „ NonZero “ ({Qt::WindingFill}). Um die Füllung basierend auf der Richtung der Pfadpunkte auszuwählen, deaktivieren Sie die Winding-Erzwingung, indem Sie setWindingEnforce(false) aufrufen.
![]() | |
Häufiger ist es jedoch, sich auf die Winding-Erzwingung zu verlassen und die bevorzugte Winding-Richtung mithilfe der Hilfsfunktionen „ setPathWinding()“, „ beginHoleSubPath()“ und „ beginSolidSubPath()“ festzulegen.
![]() | |
Dokumentation zu Mitgliedstypen
enum class QCanvasPainter::CompositeOperation
Qt Canvas Painter unterstützt drei Kompositionsoperationen:
| Konstant | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::CompositeOperation::SourceOver | 0 | Der Standardwert. Zeichnet neue Formen über den vorhandenen Inhalt. |
QCanvasPainter::CompositeOperation::SourceAtop | 1 | Die neue Form wird nur dort gezeichnet, wo sie den bestehenden Inhalt überlagert. |
QCanvasPainter::CompositeOperation::DestinationOut | 2 | Der vorhandene Inhalt bleibt an den Stellen erhalten, an denen er sich nicht mit der neuen Form überschneidet. |
Siehe auch „ setGlobalCompositeOperation()“.
[since 6.12] enum class QCanvasPainter::FillRule
Diese Enumeration legt fest, wie Pfade ausgefüllt werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::FillRule::NonZero | 0 | Der Pfad wird nach der „Non-Zero-Winding“-Regel ausgefüllt. Bei dieser Regel wird anhand der folgenden Methode ermittelt, ob sich ein Punkt innerhalb der Form befindet: Zeichnen Sie eine horizontale Linie vom Punkt zu einer Stelle außerhalb der Form. Bestimmen Sie, ob die Richtung der Linie an jedem Schnittpunkt nach oben oder nach unten zeigt. Die Windungszahl ergibt sich aus der Summe der Richtungen an den einzelnen Schnittpunkten. Ist die Zahl ungleich Null, liegt der Punkt innerhalb der Form. Dieser Füllmodus kann in den meisten Fällen auch als Schnittmenge geschlossener Formen betrachtet werden. Dieser Modus ist der Standard. |
QCanvasPainter::FillRule::EvenOdd | 1 | Der Pfad wird nach der „Odd-Even“-Füllregel gefüllt. Bei dieser Regel wird wie folgt bestimmt, ob sich ein Punkt innerhalb der Form befindet: Zeichne eine horizontale Linie vom Punkt zu einer Stelle außerhalb der Form und zähle die Anzahl der Schnittpunkte. Ist die Anzahl der Schnittpunkte ungerade, befindet sich der Punkt innerhalb der Form. |
Diese Enumeration wurde in Qt 6.12 eingeführt.
Siehe auch ` fill()`.
enum class QCanvasPainter::ImageFlag
flags QCanvasPainter::ImageFlags
Diese Enumeration definiert Flags im Zusammenhang mit Bildern. Verwenden Sie sie zusammen mit addImage() zum Setzen der Flags.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::ImageFlag::GenerateMipmaps | 1 << 0 | Setzen Sie diese Option, um Mipmaps für das Bild zu generieren. Mipmaps sollten verwendet werden, wenn bei Bildern, die auf eine Größe kleiner als die Originalgröße skaliert werden, eine glattere Darstellung gewünscht ist. |
QCanvasPainter::ImageFlag::RepeatX | 1 << 1 | Verwenden Sie dies in Verbindung mit dem Bildmuster, um das Bild entlang der X-Koordinate zu wiederholen. |
QCanvasPainter::ImageFlag::RepeatY | 1 << 2 | Verwenden Sie diese Option zusammen mit einem Bildmuster, um das Bild entlang der Y-Achse zu wiederholen. |
QCanvasPainter::ImageFlag::Repeat | RepeatX | RepeatY | Verwenden Sie dies zusammen mit einem Bildmuster, um das Bild in beiden Koordinaten zu wiederholen. |
QCanvasPainter::ImageFlag::FlipY | 1 << 3 | Spiegelt (invertiert) das Bild beim Rendern in Y-Richtung. |
QCanvasPainter::ImageFlag::Premultiplied | 1 << 4 | Die Bilddaten verfügen über ein vorvervielfachtes Alpha. |
QCanvasPainter::ImageFlag::Nearest | 1 << 5 | Die Bildinterpolation erfolgt nach dem „Nearest“-Verfahren statt nach dem „Linear“-Verfahren |
Der Typ `ImageFlags` ist ein `typedef` für ` QFlags<ImageFlag>`. Er speichert eine OR-Kombination von `ImageFlag`-Werten.
enum class QCanvasPainter::LineCap
Mit „LineCap“ wird festgelegt, wie das Zeilenende (die Kappe) gezeichnet wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::LineCap::Butt | 0 | (Standard) Quadratischer Linienabschluss, der den Endpunkt der Linie nicht überdeckt. |
QCanvasPainter::LineCap::Round | 1 | Runder Linienabschluss. |
QCanvasPainter::LineCap::Square | 2 | Eckiger Linienabschluss, der den Endpunkt überdeckt und um die Hälfte der Linienbreite darüber hinausragt. |
Siehe auch „ setLineCap()“.
enum class QCanvasPainter::LineJoin
Mit „LineJoin“ wird festgelegt, wie die Verbindungsstellen zwischen zwei miteinander verbundenen Linien dargestellt werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::LineJoin::Round | 0 | Der Kreisbogen zwischen den beiden Linien wird ausgefüllt. |
QCanvasPainter::LineJoin::Bevel | 1 | Die dreieckige Aussparung zwischen den beiden Linien wird ausgefüllt. |
QCanvasPainter::LineJoin::Miter | 2 | (Standard) Die Außenkanten der Linien werden so verlängert, dass sie sich in einem Winkel treffen, und dieser Bereich wird ausgefüllt. |
Siehe auch setLineJoin() und setMiterLimit().
enum class QCanvasPainter::PathConnection
Bei einigen Zeichenmethoden wird „PathConnection“ verwendet, um festzulegen, ob der neue Pfad mit dem letzten Punkt des vorherigen Pfads verbunden werden soll.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::PathConnection::NotConnected | 0 | Es wird keine Linie vom letzten Punkt des vorherigen Pfades zum ersten Punkt des aktuellen Pfades gezeichnet. |
QCanvasPainter::PathConnection::Connected | 1 | Der letzte Punkt des vorherigen Pfades wird mit dem ersten Punkt des aktuellen Pfades verbunden. |
Siehe auch arc().
enum class QCanvasPainter::PathWinding
Mit „PathWinding“ wird die Richtung der Pfadzeichnung festgelegt. Anhand dieser Richtung wird bestimmt, ob ein Teilpfad im Pfad ausgefüllt ist oder eine Lücke darstellt.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::PathWinding::CounterClockWise | 0 | (Standard) Verlauf gegen den Uhrzeigersinn für geschlossene Formen. |
QCanvasPainter::PathWinding::ClockWise | 1 | Wicklung im Uhrzeigersinn für Löcher. |
Siehe auch „ setPathWinding()“.
enum class QCanvasPainter::TextAlign
Mit „TextAlign“ wird festgelegt, wie der Text horizontal ausgerichtet wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::TextAlign::Left | 0 | Richtet die linke Seite des Textes horizontal an der angegebenen Position aus. |
QCanvasPainter::TextAlign::Right | 1 | Richtet die rechte Seite des Textes horizontal an der angegebenen Position aus. |
QCanvasPainter::TextAlign::Center | 2 | Richte die Mitte des Textes horizontal an der angegebenen Position aus. |
QCanvasPainter::TextAlign::Start | 3 | (Standard) Der Text wird am normalen Zeilenanfang ausgerichtet (linksbündig bei von links nach rechts schreibenden Sprachregionen, rechtsbündig bei von rechts nach links schreibenden Sprachregionen). |
QCanvasPainter::TextAlign::End | 4 | Der Text wird am normalen Zeilenende ausgerichtet (rechtsbündig bei Sprachen mit Schreibrichtung von links nach rechts, linksbündig bei Sprachen mit Schreibrichtung von rechts nach links). |
Siehe auch setTextAlign(), setTextDirection() und fillText().
enum class QCanvasPainter::TextBaseline
Mit „TextBaseline“ wird festgelegt, wie der Text vertikal ausgerichtet (an der Grundlinie ausgerichtet) wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::TextBaseline::Top | 0 | Richtet den oberen Rand des Textes vertikal an der angegebenen Position aus. |
QCanvasPainter::TextBaseline::Hanging | 1 | Richtet die hängende Grundlinie des Textes vertikal an der angegebenen Position aus. |
QCanvasPainter::TextBaseline::Middle | 2 | Richten Sie die Mitte des Textes vertikal an der angegebenen Position aus. |
QCanvasPainter::TextBaseline::Alphabetic | 3 | (Standard) Richten Sie die Grundlinie des Textes vertikal an der angegebenen Position aus. |
QCanvasPainter::TextBaseline::Bottom | 4 | Richte den unteren Rand des Textes vertikal an der angegebenen Position aus. |
Siehe auch setTextBaseline() und fillText().
enum class QCanvasPainter::TextDirection
Mit „TextDirection“ wird festgelegt, wie der Text horizontal ausgerichtet wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::TextDirection::LeftToRight | 0 | Die Textrichtung ist von links nach rechts. |
QCanvasPainter::TextDirection::RightToLeft | 1 | Die Textrichtung verläuft von rechts nach links. |
QCanvasPainter::TextDirection::Inherit | 2 | (Standard) Die Textrichtung wird von ` QGuiApplication ` übernommen. Siehe https://doc.qt.io/qt-6/qguiapplication.html#layoutDirection-prop. |
QCanvasPainter::TextDirection::Auto | 3 | Die Textrichtung wird anhand der Textzeichenfolge automatisch ermittelt. Siehe QString::isRightToLeft(). Hinweis: Da hierfür eine Analyse des Textes erforderlich ist, ist diese Option möglicherweise langsamer als andere Optionen. |
Siehe auch setTextDirection(), setTextAlign() und fillText().
enum class QCanvasPainter::WrapMode
Mit „WrapMode“ wird festgelegt, wie der Text auf mehrere Zeilen umgebrochen wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::WrapMode::NoWrap | 0 | (Standard) Es erfolgt kein Zeilenumbruch. Wenn der Text nicht genügend Zeilenumbrüche enthält, überschreitet contentWidth eine festgelegte Breite. |
QCanvasPainter::WrapMode::Wrap | 1 | Wenn möglich, erfolgt der Zeilenumbruch an einer Wortgrenze; andernfalls erfolgt er an der entsprechenden Stelle in der Zeile, auch mitten in einem Wort. |
QCanvasPainter::WrapMode::WordWrap | 2 | Der Zeilenumbruch erfolgt ausschließlich an Wortgrenzen. Ist ein Wort zu lang, überschreitet die Inhaltsbreite die festgelegte Breite. |
QCanvasPainter::WrapMode::WrapAnywhere | 3 | Der Zeilenumbruch erfolgt an einer beliebigen Stelle in einer Zeile, auch wenn dies mitten in einem Wort geschieht. |
Siehe auch setTextWrapMode() und fillText().
Dokumentation der Mitgliedsfunktionen
QCanvasPainter::QCanvasPainter()
Erstellt einen „Painter“.
[noexcept] QCanvasPainter::~QCanvasPainter()
Vernichtet den Maler.
qsizetype QCanvasPainter::activeImageCount() const
Gibt die Anzahl der aktiven „ QCanvasImage “-Objekte zurück, die bei diesem „ QCanvasPainter “ registriert sind. Dazu gehören auch die intern erstellten Bilder für „ gradients “.
QCanvasImage Objekte, die durch die Registrierung von „ QCanvasOffscreenCanvas “-Instanzen oder durch extern verwaltete Texturen erstellt wurden, werden von dieser Funktion nicht berücksichtigt.
Siehe auch activeImageMemoryUsage(), addImage() und removeImage().
qsizetype QCanvasPainter::activeImageMemoryUsage() const
Gibt eine Schätzung in Kilobyte des Speicherbedarfs der Bilddaten (Pixel) für alle aktiven „ QCanvasImage “-Instanzen dieses „painter“ zurück, die durch die Überladung von „ addImage()“ unter Verwendung von „ QImage “ erstellt wurden. Dies umfasst auch die Daten von intern erstellten Bildern für „ gradients “.
QCanvasPainter Es werden keine Kopien der CPU-seitigen „ QImage “-Daten aufbewahrt, sobald „ addImage()“ zurückgekehrt ist. Daher ist das Ergebnis dieser Funktion eine Annäherung an den GPU-Speicher, der für Texturen verwendet wird.
Hinweis: Der Wert ist lediglich eine Schätzung, die auf dem Bildformat und den Abmessungen basiert. Qt hat keine Kenntnis darüber, wie die Daten für Texturen auf der GPU-Seite im Speicher abgelegt und angeordnet sind.
Offscreen-Canvases und extern verwaltete Texturen, die über die anderen Überladungen von ` addImage()` registriert wurden, werden von dieser Funktion nicht berücksichtigt.
Für jede gültige ` QCanvasImage` kann die jeweilige Größe in Byte jederzeit durch Aufruf von ` sizeInBytes()` abgefragt werden. Diese Funktion liefert auch dann gültige Ergebnisse, wenn die ` QCanvasImage ` aus einer ` QCanvasOffscreenCanvas ` oder ` QRhiTexture` erstellt wurde, berücksichtigt jedoch keine Mipmap- oder Multisample-Daten.
Siehe auch activeImageCount(), addImage() und removeImage().
QCanvasImage QCanvasPainter::addImage(const QImage &image, QCanvasPainter::ImageFlags flags = {})
Fügt „ image “ mit „ flags “ hinzu, das dem Painter als Textur zur Verfügung steht. Gibt „ QCanvasImage “ mit der Textur-ID und weiteren Informationen zum Bild zurück. Die zurückgegebene „ QCanvasImage “ kann anschließend mit „ drawImage “ und „ QCanvasImagePattern “ verwendet werden. Nach dem Aufruf dieser Methode muss das „ image “ „ QImage “ nicht mehr im Speicher gehalten werden.
Der Aufruf mit demselben ` image ` ist eine ressourcenschonende Operation, da ein Cache-Treffer erwartet wird.
Bei der Optimierung ist darauf zu achten, dass addImage() nur einmal aufgerufen wird. Je nach Anwendungsdesign reicht dies jedoch nicht immer aus. Wenn beispielsweise die zugrunde liegenden Grafikressourcen verloren gehen – z. B. weil der „Painter“ intern mit einem neuen ` QRhi ` verknüpft wird, da ein Widget auf eine neue oberste Ebene verschoben wurde –, ist der Aufruf dieser Funktion unerlässlich, um die nativen Grafiktexturen aus ` image` neu zu erstellen.
Siehe auch drawImage() und removeImage().
QCanvasImage QCanvasPainter::addImage(QRhiTexture *texture, QCanvasPainter::ImageFlags flags = {})
Fügt „ texture “ mit „ flags “ hinzu, das dem Painter als Textur zur Verfügung steht. Das zurückgegebene „ QCanvasImage “ kann mit „ drawImage “ und „ QCanvasImagePattern “ verwendet werden.
Hinweis: Die Eigentumsrechte an „ texture “ werden nicht übernommen.
Dies ist eine überladene Funktion.
Siehe auch „ drawImage()“ und „ removeImage()“.
QCanvasImage QCanvasPainter::addImage(const QCanvasOffscreenCanvas &canvas, QCanvasPainter::ImageFlags flags = {})
Registriert „ canvas “ mit „ flags “ beim Painter, sodass es als Bild verfügbar ist. Das zurückgegebene „ QCanvasImage “ kann mit „ drawImage “ und „ QCanvasImagePattern “ verwendet werden.
Hinweis: „ canvas “ verwaltet weiterhin die zugrunde liegenden nativen Grafikressourcen, was bedeutet, dass „ removeImage()“ „ canvas “ nicht ungültig macht.
Dies ist eine überladene Funktion.
Siehe auch drawImage() und removeImage().
void QCanvasPainter::addPath(const QPainterPath &path)
Fügt „ path “ zum aktuellen Pfad hinzu.
Hinweis: QCanvasPainter verwendet standardmäßig die Füllregel „ NonZero “ (Qt::WindingFill), während QPainterPath standardmäßig die Füllregel „ Qt::OddEvenFill “ verwendet. Denken Sie daher daran, die Füllregel bei Bedarf anzupassen, beispielsweise mithilfe von ` setFillRule()`.
Hinweis: Diese Methode dient hauptsächlich der Kompatibilität mit QPainter und QPainterPath. Sie bietet keine Leistungssteigerung im Vergleich zum direkten Zeichnen des Pfades mit den Methoden unter QCanvasPainter.
void QCanvasPainter::addPath(const QCanvasPath &path, const QTransform &transform = QTransform())
Fügt „ path “ in den aktuellen Pfad ein und verwendet dabei optional „ transform “, um die Pfadpunkte zu ändern. Wenn „ transform “ nicht angegeben wird (oder es sich um die Einheitsmatrix handelt), ist dieser Vorgang sehr schnell, da die Pfaddaten wiederverwendet werden.
![]() | |
void QCanvasPainter::addPath(const QCanvasPath &path, qsizetype start, qsizetype count, const QTransform &transform = QTransform())
Fügt „ path “ zum aktuellen Pfad hinzu, beginnend mit dem Befehl unter start und einschließlich count Befehlen. Optional kann transform verwendet werden, um die Pfadpunkte zu ändern. Der Bereich von start und count wird überprüft, damit nicht mehr als QCanvasPath::commandsSize() Befehle aufgerufen werden. Falls der Pfad nicht von der aktuellen Pfadposition aus fortgesetzt werden soll, rufen Sie zunächst moveTo() auf, z. B. mit 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)
Erstellt einen neuen Teilpfad in Form eines Kreisbogens. Der Mittelpunkt des Bogens liegt bei centerX, centerY, mit radius, und der Bogen wird vom Winkel a0 bis a1 gezeichnet und in direction (ClockWise oder CounterClockWise) geschwenkt. Wenn connection gleich NotConnected ist, fügt der Bogen keine Linie von der vorherigen Pfadposition zum Anfang des Bogens hinzu. Winkel werden in Radianten angegeben.
![]() | |
Hinweis: Während der HTML-Canvas-2D-Kontext die Funktion `arc()` zum Zeichnen von Kreisen verwendet, wird bei „ QCanvasPainter “ empfohlen, hierfür die Funktionen ` circle()` oder ` ellipse()` zu verwenden.
void QCanvasPainter::arc(QPointF centerPoint, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
Erstellt einen neuen Teilpfad in Form eines Kreisbogens. Der Mittelpunkt des Bogens liegt bei centerPoint, der Radius beträgt radius, und der Bogen wird vom Winkel a0 bis zum Winkel a1 gezeichnet und in direction (ClockWise oder CounterClockWise) gezeichnet. Wenn connection den Wert NotConnected hat, fügt der Bogen keine Linie von der vorherigen Pfadposition zum Startpunkt des Bogens hinzu. Winkel werden in Radianten angegeben.
Hinweis: Während der HTML-Canvas-2D-Kontext die Funktion `arc()` zum Zeichnen von Kreisen verwendet, wird bei „ QCanvasPainter “ empfohlen, hierfür die Funktionen ` circle()` oder ` ellipse()` zu verwenden.
Dies ist eine überladene Funktion.
void QCanvasPainter::arcTo(qreal x1, qreal y1, qreal x2, qreal y2, qreal radius)
Fügt an der Ecke, die durch den letzten Pfadpunkt und zwei angegebene Punkte (x1, y1 und x2, y2) definiert ist, ein Bogensegment mit der Koordinaten radius hinzu. Der Bogen wird bei Bedarf automatisch durch eine Gerade mit dem letzten Punkt des Pfades verbunden.
![]() | |
void QCanvasPainter::arcTo(QPointF controlPoint1, QPointF controlPoint2, qreal radius)
Fügt an der Ecke, die durch den letzten Pfadpunkt und zwei angegebene Punkte (controlPoint1 und controlPoint2) definiert ist, ein Bogensegment hinzu, wobei radius gilt. Der Bogen wird bei Bedarf automatisch mit einer geraden Linie an den letzten Punkt des Pfades angeschlossen.
Dies ist eine überladene Funktion.
void QCanvasPainter::beginHoleSubPath()
Einen Teilpfad „hole“ starten. Dies entspricht setPathWinding(QCanvasPainter::PathWinding::ClockWise))
![]() | |
Siehe auch beginSolidSubPath().
void QCanvasPainter::beginPath()
Beginnt mit dem Zeichnen eines neuen Pfades und löscht dabei den aktuellen Pfad.
void QCanvasPainter::beginSolidSubPath()
Starten Sie einen absoluten Teilpfad. Dies entspricht setPathWinding(QCanvasPainter::PathWinding::CounterClockWise))
Siehe auch beginHoleSubPath().
void QCanvasPainter::bezierCurveTo(qreal cp1X, qreal cp1Y, qreal cp2X, qreal cp2Y, qreal x, qreal y)
Fügt ein kubisches Bézier-Segment vom letzten Punkt des Pfades über zwei Kontrollpunkte (cp1X, cp1Y und cp2X, cp2Y) bis zum angegebenen Punkt (x, y) hinzu.
![]() | |
void QCanvasPainter::bezierCurveTo(QPointF controlPoint1, QPointF controlPoint2, QPointF endPoint)
Fügt ein kubisches Bézier-Segment vom letzten Punkt des Pfades über zwei Kontrollpunkte (controlPoint1 und controlPoint2) bis zum angegebenen Punkt endPoint hinzu.
Dies ist eine überladene Funktion.
void QCanvasPainter::circle(qreal centerX, qreal centerY, qreal radius)
Erstellt einen neuen kreisförmigen Teilpfad, der auf den Punkten ( centerX, centerY) zentriert ist und einen Radius von radius hat.
![]() | |
void QCanvasPainter::circle(QPointF centerPoint, qreal radius)
Erstellt einen neuen kreisförmigen Teilpfad, dessen Mittelpunkt bei „ centerPoint “ liegt und dessen Radius „ radius “ beträgt.
Dies ist eine überladene Funktion.
void QCanvasPainter::cleanupResources()
Entfernt nicht verwendete Texturen aus dem Cache.
Zudem können beim Aufruf dieser Funktion andere Caches und Pools verkleinert werden, um den Speicherverbrauch zu minimieren. Dies kann möglicherweise zu aufwändigeren Zeichenaufrufen im Anschluss führen.
void QCanvasPainter::clearRect(qreal x, qreal y, qreal width, qreal height)
Löscht die Pixel in einem rechteckigen Bereich, indem das durch x, y, width und height angegebene Rechteck mit transparentem Schwarz gefüllt wird. Da das Löschen keine Überblendung erfordert, kann es schneller sein als fillRect().
![]() | |
void QCanvasPainter::clearRect(const QRectF &rect)
Löscht die Pixel in einem rechteckigen Bereich, indem das durch ` rect ` angegebene Rechteck mit transparentem Schwarz gefüllt wird. Hierbei handelt es sich um eine überladene Methode, die ` QRectF` verwendet.
Dies ist eine überladene Funktion.
void QCanvasPainter::closePath()
Schließt den aktuellen Teilpfad mit einem Liniensegment ab. Dies entspricht dem Befehl „ lineTo “ ([Startpunkt]) als letztes Pfadelement.
QCanvasOffscreenCanvas QCanvasPainter::createCanvas(QSize pixelSize, int sampleCount = 1, QCanvasOffscreenCanvas::Flags flags = {})
Gibt eine neue Offscreen-Leinwand mit den angegebenen Werten für „ pixelSize “, „ sampleCount “ und „ flags “ zurück.
Die Größe des Canvas wird in Pixeln angegeben. Die Eigenschaften ` pixelSize`, ` sampleCount` und ` flags ` sind danach unveränderlich. Um einen Canvas mit einer anderen Größe, einer anderen Sample-Anzahl oder anderen Flags zu erhalten, erstellen Sie einen neuen.
Um eine Offscreen-Canvas mit Zeichenbefehlen anzusteuern, rufen Sie bei der Arbeit mit der Low-Level-API die entsprechende Überladung von ` QCanvasRhiPaintDriver::beginPaint()` auf, oder bei Verwendung der Komfort-Widget- oder „ Qt Quick “-Elementklassen die Methoden ` QCanvasPainterWidget::beginCanvasPainting()` oder ` QCanvasPainterItemRenderer::beginCanvasPainting()`.
Normalerweise wird der Inhalt der Leinwand beim Zeichnen gelöscht. Um dies zu deaktivieren, übergeben Sie ` PreserveContents ` in ` flags`.
Um Multisample-Rendering auf die Leinwand anzufordern (Multisample-Antialiasing, MSAA), legen Sie eine Sample-Anzahl größer als 1 fest, beispielsweise 4 oder 8. Das Beibehalten des Leinwandinhalts zwischen den Render-Durchläufen wird jedoch nicht unterstützt, wenn Multisampling aktiviert ist, und das Flag ` PreserveContents ` funktioniert in diesem Fall nicht.
Hinweis: Eine Offscreen-Canvas wird durch eine vom Hauptrenderziel unabhängige Textur gestützt, und das Rendern darauf erfolgt immer mit einem Skalierungsfaktor (Gerätepixelverhältnis) von 1. Um beispielsweise eine Canvas zu erstellen, die den tatsächlichen Renderabmessungen einer „ QCanvasPainterWidget “ entspricht, übergeben Sie „ size() * devicePixelRatio() “ als „ pixelSize “, da die „ size() “ des Widgets lediglich die logische Größe ohne den Skalierungsfaktor angibt.
void QCanvasPainter::destroyCanvas(QCanvasOffscreenCanvas &canvas)
Zerstört die Ressourcen, die hinter „ canvas “ stehen. „ canvas “ wird dann zu „ null canvas “.
Der „Painter“ führt dies automatisch bei seiner Zerstörung durch. Daher ist der Aufruf dieser Funktion nur dann erforderlich, wenn die zugehörigen Ressourcen sofort freigegeben werden sollen.
void QCanvasPainter::drawBoxShadow(const QCanvasBoxShadow &shadow)
Zeichnet ein Rechteck mit der Funktion „ shadow “. Der Schatten wird mit den durch „ shadow “ definierten Parametern für Position, Größe, Farbe, Unschärfe usw. gezeichnet. Der Aufruf von „ beginPath()“ vor dieser Methode ist nicht erforderlich.
Hinweis: Um den von `drawBoxShadow()` abgedeckten Bereich visuell zu erkennen, setzen Sie die Umgebungsvariable ` QCPAINTER_DEBUG_SHADOW_RECT `.
![]() | |
Siehe auch QCanvasBoxShadow.
void QCanvasPainter::drawImage(const QCanvasImage &image, qreal x, qreal y)
Zeichne „ image “ in „ x “, „ y “, in der Standardgröße.
![]() | |
Siehe auch addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &destinationRect)
Zeichne image in der Position und Größe von destinationRect.
Dies ist eine überladene Funktion.
Siehe auch addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &sourceRect, const QRectF &destinationRect)
Zeichne „ image “ in der Position und Größe von „ destinationRect “ aus dem Bildbereich „ sourceRect “ ein.
![]() | |
Dies ist eine überladene Funktion.
Siehe auch addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, qreal x, qreal y, qreal width, qreal height)
Zeichne „ image “ in „ x “, „ y “ an den angegebenen Koordinaten „ width “ und „ height “.
![]() | |
Dies ist eine überladene Funktion.
Siehe auch addImage().
void QCanvasPainter::ellipse(qreal centerX, qreal centerY, qreal radiusX, qreal radiusY)
Erstellt einen neuen ellipsenförmigen Teilpfad, dessen Mittelpunkt bei ( centerX, centerY) liegt, mit den Werten radiusX und radiusY.
![]() | |
void QCanvasPainter::ellipse(const QRectF &rect)
Erstellt einen neuen ellipsenförmigen Teilpfad in „ rect “. Diese Ellipse deckt den Bereich „ rect “ ab.
![]() | |
Dies ist eine überladene Funktion.
void QCanvasPainter::ellipse(QPointF centerPoint, qreal radiusX, qreal radiusY)
Erstellt einen neuen ellipsenförmigen Teilpfad, dessen Mittelpunkt bei centerPoint liegt und dessen Achsen bei radiusX und radiusY liegen.
Dies ist eine überladene Funktion.
void QCanvasPainter::fill()
Füllt den aktuellen Pfad mit dem aktuellen Füllstil und der aktuellen Füllregel.
![]() | |
Siehe auch setFillStyle() und setFillRule().
[since 6.12] void QCanvasPainter::fill(QCanvasPainter::FillRule fillRule)
Füllt den aktuellen Pfad mit dem aktuellen Füllstil und der Füllregel „ fillRule “.
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.12 eingeführt.
Siehe auch „ setFillStyle()“ und „ setFillRule()“.
void QCanvasPainter::fill(const QCanvasPath &path, int pathGroup = -1)
Füllt den „ path “ mit dem aktuellen Füllstil und der aktuellen Füllregel und ordnet ihn dem „ pathGroup “ zu. Das Zeichnen über den „ QCanvasPath “ ist optimal, wenn der Pfad mehr Befehle enthält und größtenteils statisch ist.
Wenn „ pathGroup “ den Wert „ -1 “ hat, wird der Pfad auf der GPU-Seite nicht zwischengespeichert. Dies ist die Standardeinstellung. Um die Zwischenspeicherung von Pfaddaten anzufordern, übergeben Sie einen Wert, der gleich oder größer als „ 0 “ ist. Weitere Informationen zur Verwendung von Pfad-Cache-Gruppen finden Sie in der Dokumentation unter „ QCanvasPath “.
Der Aufruf von ` beginPath()` vor dieser Methode ist nicht erforderlich.
![]() | |
Dies ist eine überladene Funktion.
Siehe auch ` setFillStyle()`, ` setFillRule()` und ` removePathGroup()`.
[since 6.12] void QCanvasPainter::fill(const QCanvasPath &path, QCanvasPainter::FillRule fillRule, int pathGroup = -1)
Füllt den „ path “ mit dem aktuellen Füllstil und der aktuellen Füllregel fillRule
Dies ist eine überladene Funktion.
Diese Funktion wurde in Qt 6.12 eingeführt.
void QCanvasPainter::fillRect(qreal x, qreal y, qreal width, qreal height)
Zeichnet ein gefülltes Rechteck an der angegebenen Position ( x, y) mit der Größe width, height.
Hinweis: Diese Funktion dient der Vereinfachung. Wenn Sie mehr als nur ein Rechteck füllen möchten, verwenden Sie vorzugsweise ` rect()`.
![]() | |
void QCanvasPainter::fillRect(const QRectF &rect)
Zeichnet ein gefülltes Rechteck in ` rect`. Hierbei handelt es sich um eine überladene Methode, die ` QRectF` verwendet.
Hinweis: Diese Funktion dient der Vereinfachung. Wenn Sie mehr als nur ein Rechteck füllen möchten, verwenden Sie vorzugsweise ` rect()`.
Dies ist eine überladene Funktion.
void QCanvasPainter::fillText(const QString &text, qreal x, qreal y, qreal maxWidth = 0)
Zeichnet eine „ text “-Zeichenkette an der angegebenen Position ( x, y) mit den aktuellen Werten für „textAlign“ und „textBaseline“. Um den Text mehrzeilig umbrechen zu lassen, setzen Sie den Zeilenumbruchmodus mithilfe von setTextWrapMode() auf einen anderen Wert als den Standardwert „ NoWrap “. Der optionale Parameter „ maxWidth “ ist standardmäßig auf „ 0 “ gesetzt. Das bedeutet, dass der Text beispielsweise bei der Einstellung „ WordWrap “ nach jedem Wort umgebrochen wird. Setzen Sie den Parameter „ maxWidth “ auf die gewünschte Zeilenbreite in Pixeln.
![]() | |
Siehe auch setTextAlign(), setTextBaseline() und setTextWrapMode().
void QCanvasPainter::fillText(const QString &text, const QRectF &rect)
Zeichnet die Zeichenkette „ text “ innerhalb des Bereichs „ rect “ mit den aktuellen Werten für „textAlign“ und „textBaseline“. Die Breite des Parameters „rect“ wird als „maxWidth“ verwendet.
Dies ist eine überladene Methode, die „ QRectF “ verwendet. Oft ist es sinnvoll, die Textgrundlinie auf „ TextBaseline::Top “ oder „ TextBaseline::Middle “ zu setzen, wenn Text mit dieser Methode gezeichnet wird.
![]() | |
Dies ist eine überladene Funktion.
Siehe auch „ setTextAlign()“, „ setTextBaseline()“ und „ setTextWrapMode()“.
void QCanvasPainter::fillText(const QString &text, QPointF point, qreal maxWidth = 0)
Zeichnet die Zeichenkette „ text “ an der angegebenen Position „ point “ mit den aktuellen Werten für „textAlign“ und „textBaseline“ ein. Um den Text in mehrere Zeilen umbrechen zu lassen, setzen Sie den Zeilenumbruchmodus mithilfe von „ setTextWrapMode()“ auf einen anderen Wert als den Standardwert „ NoWrap “. Der optionale Parameter „ maxWidth “ ist standardmäßig auf „ 0 “ gesetzt. Das bedeutet, dass beispielsweise bei der Einstellung „ WordWrap “ der Text nach jedem Wort umgebrochen wird. Setzen Sie den Parameter ` maxWidth ` auf die gewünschte Zeilenbreite in Pixeln.
Dies ist eine überladene Methode, die „ QPointF “ verwendet.
Dies ist eine überladene Funktion.
Siehe auch „ setTextAlign()“, „ setTextBaseline()“ und „ setTextWrapMode()“.
QTransform QCanvasPainter::getTransform() const
Gibt die aktuelle Transformation zurück.
void QCanvasPainter::lineTo(qreal x, qreal y)
Fügt eine Liniensegment vom letzten Punkt des Pfades zum Punkt ( x, y) hinzu.
![]() | |
void QCanvasPainter::lineTo(QPointF point)
Fügt eine Liniensegment vom letzten Punkt des Pfades bis zum „ point “ hinzu.
Dies ist eine überladene Funktion.
void QCanvasPainter::moveTo(qreal x, qreal y)
Startet einen neuen Teilpfad mit ( x, y) als erstem Punkt.
void QCanvasPainter::moveTo(QPointF point)
Startet einen neuen Teilpfad mit „ point “ als erstem Punkt.
Dies ist eine überladene Funktion.
void QCanvasPainter::quadraticCurveTo(qreal cpX, qreal cpY, qreal x, qreal y)
Fügt ein quadratisches Bézier-Segment vom letzten Punkt des Pfades über einen Kontrollpunkt (cpX, cpY) zum angegebenen Punkt (x, y) hinzu.
![]() | |
void QCanvasPainter::quadraticCurveTo(QPointF controlPoint, QPointF endPoint)
Fügt ein quadratisches Bézier-Segment vom letzten Punkt des Pfades über einen „ controlPoint “ zum angegebenen „ endPoint “ hinzu.
Dies ist eine überladene Funktion.
void QCanvasPainter::rect(qreal x, qreal y, qreal width, qreal height)
Erstellt einen neuen rechteckigen Teilpfad an der Position x, y mit den Abmessungen width, height.
![]() | |
void QCanvasPainter::rect(const QRectF &rect)
Erstellt einen neuen rechteckigen Teilpfad an der Position „ rect “. Hierbei handelt es sich um eine überladene Methode, die „ QRectF “ verwendet.
Dies ist eine überladene Funktion.
void QCanvasPainter::removeImage(const QCanvasImage &image)
Gibt die mit ` image ` verknüpften Ressourcen frei und entfernt das Bild aus dem Painter.
Hinweis: Diese Funktion muss normalerweise nicht aufgerufen werden, da Ressourcen wie Texturen ohnehin im Destruktor des Painters freigegeben werden. Diese Funktion ist nützlich, wenn aufgrund einer großen Anzahl von Bildern der Speicherbedarf reduziert werden muss und einige davon nicht mehr verwendet werden.
Hinweis: Entfernte Bilder können nicht mehr für Malvorgänge verwendet werden.
Hinweis: Ressourcen wie die mit der zugrunde liegenden 3D-API erstellten Texturen werden möglicherweise nicht sofort freigegeben. Solche Vorgänge können auf nachfolgende Frames verschoben werden, typischerweise wenn dieses ` QCanvasPainter ` erneut mit dem Zeichnen beginnt, nachdem die aktiven Zeichenaufrufe übermittelt wurden.
Siehe auch ` addImage()`.
void QCanvasPainter::removePathGroup(int pathGroup)
Entfernt „ pathGroup “ aus dem Painter-Cache. Wenn anschließend „ fill()“ oder „ stroke()“ für „ pathGroup “ aufgerufen wird, wird der Pfad im Gruppen-Cache neu generiert.
Hinweis: Dies muss normalerweise nicht aufgerufen werden, da Pfade im Destruktor des Painters entfernt werden. Verwenden Sie dies nur, um den Speicherverbrauch zu reduzieren, wenn pathGroup nicht mehr benötigt wird oder z. B. wenn der Pfad deutlich weniger Befehle enthält als zuvor und die Puffergröße verringert werden soll.
Siehe auch „ fill()“ und „ stroke()“.
void QCanvasPainter::reset()
Setzt den aktuellen Malzustand auf die Standardwerte zurück.
Dazu gehören die Strich- und Füllstile sowie die zugehörigen Eigenschaften, die Transformationsmatrix, der Ausschnittbereich, die textbezogenen Einstellungen, die Compositing-Eigenschaften, der Zeichnungszustandsstapel und die Antialiasing-Einstellungen.
Hinweis: Diese Methode unterscheidet sich von der reset()-Methode des HTML-Canvas-2D-Kontexts darin, dass sie die Canvas-Puffer nicht visuell löscht.
Hinweis: Die Werte von ` setWindingEnforce()` und ` setHighQualityStroking()` werden nicht geändert.
![]() | |
Siehe auch „ save()“ und „ restore()“.
void QCanvasPainter::resetClipping()
Setzt die Clipping-Einstellung zurück und deaktiviert sie.
Siehe auch „ setClipRect()“.
void QCanvasPainter::resetTransform()
Setzt die aktuelle Transformation auf eine Einheitsmatrix zurück.
void QCanvasPainter::restore()
Ruft den aktuellen Render-Zustand ab und stellt ihn wieder her. Der zuvor gespeicherte Zustand wird somit wiederhergestellt. Wenn save() nicht aufgerufen wurde und der Zustandsstapel leer ist, hat der Aufruf dieser Funktion keine Auswirkung.
Siehe auch ` save()`.
void QCanvasPainter::rotate(qreal angle)
Dreht das aktuelle Koordinatensystem um angle im Uhrzeigersinn.
Der Winkel wird in Radianten angegeben. Verwenden Sie qDegreesToRadians(), um Grad in Radianten umzurechnen.
![]() | |
void QCanvasPainter::roundRect(qreal x, qreal y, qreal width, qreal height, qreal radius)
Erstellt einen neuen Unterpfad in Form eines abgerundeten Rechtecks an der Position x, y mit den Abmessungen width, height. Die Ecken werden wie folgt abgerundet: radius.
![]() | |
void QCanvasPainter::roundRect(const QRectF &rect, qreal radius)
Erstellt einen neuen, abgerundeten Rechteck-Teilpfad an der Position „ rect “ mit den Ecken „ radius “. Hierbei handelt es sich um eine überladene Methode, die „ QRectF “ verwendet.
Dies ist eine überladene Funktion.
void QCanvasPainter::roundRect(const QRectF &rect, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft)
Erstellt einen neuen, abgerundeten, rechteckigen Teilpfad unter rect. Die Ecken können je nach Ecke unterschiedlich abgerundet werden, mit radiusTopLeft, radiusTopRight, radiusBottomRight und radiusBottomLeft.
Dies ist eine überladene Funktion.
void QCanvasPainter::roundRect(qreal x, qreal y, qreal width, qreal height, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft)
Erstellt einen neuen, abgerundeten, rechteckigen Teilpfad an der Position x, y mit den Abmessungen width, height. Die Eckenrundung kann je nach Ecke variieren, mit den Werten radiusTopLeft, radiusTopRight, radiusBottomRight, radiusBottomLeft.
![]() | |
Dies ist eine überladene Funktion.
void QCanvasPainter::save()
Speichert den aktuellen Render-Zustand in einem Statusstapel. Zum Wiederherstellen des Zustands muss die entsprechende Funktion „ restore()“ aufgerufen werden.
![]() | |
Siehe auch ` restore()`.
void QCanvasPainter::scale(qreal scale)
Skaliert das aktuelle Koordinatensystem um den Faktor scale. Sowohl die x- als auch die y-Koordinaten werden gleichmäßig skaliert.
![]() | |
void QCanvasPainter::scale(qreal scaleX, qreal scaleY)
Skaliert das aktuelle Koordinatensystem um scaleX und scaleY.
Dies ist eine überladene Funktion.
void QCanvasPainter::setAntialias(qreal antialias)
Legt den aktuellen Antialiasing-Wert auf „ antialias “ in Pixeln fest. Ein höherer Antialiasing-Wert sorgt für eine glattere Darstellung. Dies wirkt sich nur auf das Zeichnen von Füllungen und Konturen aus, nicht auf Bilder oder Texte. Der Standardwert ist „ 1.0 “ und der Maximalwert ist „ 10.0 “.
Das Anti-Aliasing kann pro Pfad angepasst werden, sodass es vor jedem Strich bzw. jeder Füllung festgelegt werden kann. Um das Anti-Aliasing zu deaktivieren und den Rechenaufwand zu reduzieren, setzen Sie den Anti-Aliasing-Wert auf 0.
![]() | |
Siehe auch setTextAntialias().
void QCanvasPainter::setClipRect(qreal x, qreal y, qreal width, qreal height)
Setzt das aktuelle „Scissor“-Rechteck auf (x, y, width, height). Das „Scissor“-Rechteck wird durch die aktuelle Transformation transformiert.
Hinweis: Das Clipping ist mit einem gewissen Leistungsaufwand verbunden und sollte nur bei Bedarf verwendet werden.
![]() | |
Siehe auch resetClipping().
void QCanvasPainter::setClipRect(const QRectF &rect)
Setzt das aktuelle Scherenrechteck auf „ rect “. Das Scherenrechteck wird durch die aktuelle Transformation transformiert.
Hinweis: Das Clipping ist mit einem gewissen Performance-Aufwand verbunden und sollte nur bei Bedarf verwendet werden.
Dies ist eine überladene Funktion.
Siehe auch „ resetClipping()“.
[since 6.12] void QCanvasPainter::setFillRule(QCanvasPainter::FillRule fillRule)
Legt die Regel für die Pfadfüllung auf „ fillRule “ fest. Dieser Wert gilt für alle Aufrufe von „ fill()“, die nach dem Festlegen der Regel erfolgen. Die Standardregel für die Pfadfüllung lautet QCanvasPainter::FillRule::NonZero
![]() | |
Diese Funktion wurde in Qt 6.12 eingeführt.
void QCanvasPainter::setFillStyle(QColor color)
Legt den Füllstil auf ein durchgefärbtes „ color “ fest. Der Standard-Füllstil ist durchgefärbt schwarz (0, 0, 0, 1).
![]() | |
void QCanvasPainter::setFillStyle(const QCanvasBrush &brush)
Setzt den Füllstil auf „ brush “. Der Standard-Füllstil ist durchgehend schwarz (0, 0, 0, 1).
![]() | |
Dies ist eine überladene Funktion.
void QCanvasPainter::setFont(const QFont &font)
Legt „ font “ als aktuell aktive Schriftart fest.
void QCanvasPainter::setGlobalAlpha(qreal alpha)
Setzt den globalen Alpha-Wert (Transparenz) auf alpha. Dieser Alpha-Wert wird auf alle gerenderten Formen angewendet. Bereits transparente Pfade werden ebenfalls proportional transparenter. Der Alpha-Wert sollte zwischen 0,0 (vollständig transparent) und 1,0 (vollständig undurchsichtig) liegen. Standardmäßig beträgt der Alpha-Wert 1.0.
![]() | |
void QCanvasPainter::setGlobalBrightness(qreal value)
Legt die globale Helligkeit auf „ value “ fest. Diese Helligkeit wird auf alle gerenderten Formen angewendet. Bei einem Wert von 0 wird die Darstellung komplett schwarz. Der Wert kann auch größer als 1,0 sein, um die Helligkeit zu erhöhen. Standardmäßig beträgt die Helligkeit „ 1.0 “.
![]() | |
void QCanvasPainter::setGlobalCompositeOperation(QCanvasPainter::CompositeOperation operation)
Setzt den globalen Composite-Modus auf „ operation “. Dieser Modus wird auf alle Zeichenvorgänge angewendet. Der Standardmodus ist „ QCanvasPainter::CompositeOperation::SourceOver “.
Hinweis: Damit die Composite-Modi ordnungsgemäß funktionieren, müssen „ alphaBlending “ aktiviert und ein transparenter Hintergrund für die Leinwand verwendet werden.
![]() | |
void QCanvasPainter::setGlobalContrast(qreal value)
Setzt den globalen Kontrast auf „ value “. Dieser Kontrast wird auf alle gerenderten Formen angewendet. Bei einem Wert von 0 wird die Darstellung vollständig grau (0,5; 0,5; 0,5). Der Wert kann auch größer als 1,0 sein, um den Kontrast zu erhöhen. Standardmäßig beträgt der Kontrast „ 1.0 “.
![]() | |
void QCanvasPainter::setGlobalSaturation(qreal value)
Legt die globale Sättigung auf „ value “ fest. Diese Sättigung wird auf alle gerenderten Formen angewendet. Bei einem Wert von 0 wird die Sättigung deaktiviert, sodass die Darstellung vollständig in Graustufen erfolgt. Der Wert kann auch größer als 1,0 sein, um die Sättigung zu erhöhen. Standardmäßig beträgt die Sättigung „ 1.0 “.
![]() | |
void QCanvasPainter::setHighQualityStroking(bool enabled)
Legt die hochwertige Konturierung auf „ enabled “ fest. Die Einstellung „ true “ sorgt in einigen selteneren Fällen, in denen sich Konturen überlappen und keine volle Deckkraft aufweisen, für eine korrektere Darstellung. Die Aktivierung dieser Option führt zu einem höheren Rendering-Aufwand. Der Standardwert ist „ false “.
![]() | |
void QCanvasPainter::setLineCap(QCanvasPainter::LineCap cap)
Legt das Linienende für Striche auf „ cap “ fest. Die Standard-Linienendform ist „ QCanvasPainter::LineCap::Butt “.
![]() | |
void QCanvasPainter::setLineJoin(QCanvasPainter::LineJoin join)
Legt den Linienanschluss der Striche auf „ join “ fest. Der Standard-Linienanschluss ist „ QCanvasPainter::LineJoin::Miter “.
![]() | |
Siehe auch setMiterLimit().
void QCanvasPainter::setLineWidth(qreal width)
Legt die Linienbreite der Striche auf width in Pixeln fest. Die Standard-Linienbreite beträgt 1.0. Wenn die Kantenglättung aktiviert ist, wird bei Breiten, die dünner als ein einzelnes Pixel sind, die Deckkraft automatisch ausgeblendet, wodurch eine glatte Darstellung entsteht.
![]() | |
Siehe auch stroke().
void QCanvasPainter::setMiterLimit(qreal limit)
Legt den Gehrungsgrenzwert auf „ limit “ fest. Der Gehrungsgrenzwert bestimmt, wann eine scharfe Ecke abgeschrägt wird. Wenn die Ecklänge diesen Grenzwert überschreiten würde, wird stattdessen zwischen den Linien eine „ QCanvasPainter::LineJoin::Bevel “ angewendet. Dies wirkt sich nur bei der Linienverbindung „ QCanvasPainter::LineJoin::Miter “ aus. Der Standardgrenzwert ist „ 10.0 “.
![]() | |
Siehe auch „ setLineJoin()“.
void QCanvasPainter::setPathWinding(QCanvasPainter::PathWinding winding)
Setzt den aktuellen Teilpfad „ winding “ entweder auf „ CounterClockWise “ (Standard) oder auf „ ClockWise “. „ CounterClockWise “ zeichnet geschlossene Teilpfade, während „ ClockWise “ Löcher zeichnet.
![]() | |
Siehe auch beginHoleSubPath() und beginSolidSubPath().
void QCanvasPainter::setStrokeStyle(QColor color)
Legt den Strichstil auf „ color “ fest. Der Standard-Strichstil ist ein durchgezogener schwarzer Strich (0, 0, 0, 1).
![]() | |
void QCanvasPainter::setStrokeStyle(const QCanvasBrush &brush)
Setzt den Strichstil auf „ brush “. Der Standard-Strichstil ist durchgehend schwarz (0, 0, 0, 1).
![]() | |
Dies ist eine überladene Funktion.
void QCanvasPainter::setTextAlign(QCanvasPainter::TextAlign align)
Legt die horizontale Ausrichtung des Textes auf „ align “ fest. Die Standardausrichtung ist „ QCanvasPainter::TextAlign::Start “.
![]() | |
Siehe auch setTextBaseline().
void QCanvasPainter::setTextAntialias(qreal antialias)
Legt den aktuellen Grad der Textglättung fest. Der Wert „ antialias “ ist ein Multiplikator für die normale Textglättung, d. h., „ 0.0 “ deaktiviert die Textglättung und „2,0“ verdoppelt sie. Der Standardwert ist 1,0.
Hinweis: Aufgrund der verwendeten Technik zur Textglättung (SDF) ist der maximale Glättungsgrad recht begrenzt, was sich bei kleinen Schriftgrößen weniger stark bemerkbar macht.
![]() | |
void QCanvasPainter::setTextBaseline(QCanvasPainter::TextBaseline baseline)
Legt die vertikale Ausrichtung (Grundlinie) des Textes auf „ baseline “ fest. Die Standardausrichtung ist „ QCanvasPainter::TextBaseline::Alphabetic “.
![]() | |
Siehe auch ` setTextAlign()`.
void QCanvasPainter::setTextDirection(QCanvasPainter::TextDirection direction)
Legt die Textrichtung auf „ direction “ fest. Die Standardrichtung ist „ QCanvasPainter::TextDirection::Inherit “.
![]() | |
void QCanvasPainter::setTextLineHeight(qreal height)
Legt die Zeilenhöhe für umgebrochenen Text in Pixeln auf „ height “ fest. Die Standard-Zeilenhöhe beträgt „ 0 “.
![]() | |
void QCanvasPainter::setTextWrapMode(QCanvasPainter::WrapMode wrapMode)
Stellt den Textumbruchmodus auf „ wrapMode “ ein. Der Standard-Umbruchmodus ist „ QCanvasPainter::WrapMode::NoWrap “.
![]() | |
void QCanvasPainter::setTransform(const QTransform &transform)
Setzt die aktuelle Transformation zurück und verwendet stattdessen „ transform “.
![]() | |
Siehe auch transform().
void QCanvasPainter::setWindingEnforce(bool enabled)
Legt die Windungsrichtung auf „ enabled “ fest. Durch die Einstellung „ false “ wird die Erzwingung der Pfadwindung deaktiviert, sodass die Einstellung in „ setPathWinding()“ übernommen wird. Durch die Deaktivierung können beispielsweise Löcher in Pfade erstellt werden, indem die Punkte im Uhrzeigersinn hinzugefügt werden. Die Deaktivierung kann zudem die Leistung steigern. Der Standardwert ist „ true “.
![]() | |
void QCanvasPainter::skew(qreal angleX, qreal angleY = 0.0)
Verschiebt (verzerrt) das aktuelle Koordinatensystem entlang der X-Achse um angleX und entlang der Y-Achse um angleY. Die Winkel werden in Radianten angegeben.
![]() | |
void QCanvasPainter::stroke()
Zeichnet den aktuellen Pfad mit dem aktuellen Strichstil nach.
![]() | |
Siehe auch „ setStrokeStyle()“.
void QCanvasPainter::stroke(const QCanvasPath &path, int pathGroup = -1)
Zeichnet den Pfad „ path “ mit dem aktuellen Strichstil und ordnet ihn „ pathGroup “ zu. Das Zeichnen über „ QCanvasPath “ ist optimal, wenn der Pfad mehr Befehle enthält und weitgehend statisch ist.
Wenn „ pathGroup “ auf „ -1 “ gesetzt ist, werden die rendernbezogenen Daten des Pfades nicht zwischengespeichert. Dies ist die Standardeinstellung. Um die Zwischenspeicherung von Pfaddaten zu erzwingen, übergeben Sie einen Wert, der gleich oder größer als „ 0 “ ist. Weitere Informationen zur Verwendung von Pfad-Cache-Gruppen finden Sie in der Dokumentation unter „ QCanvasPath “.
Der Aufruf von ` beginPath()` vor dieser Methode ist nicht erforderlich.
![]() | |
Dies ist eine überladene Funktion.
Siehe auch „ setStrokeStyle()“ und „ removePathGroup()“.
void QCanvasPainter::strokeRect(qreal x, qreal y, qreal width, qreal height)
Zeichnet ein umrandetes Rechteck an der angegebenen Position ( x, y) mit der Größe width, height.
Hinweis: Diese Funktion dient der Vereinfachung. Wenn Sie mehr als nur ein Rechteck mit Umrandung zeichnen möchten, verwenden Sie vorzugsweise ` rect()`.
![]() | |
void QCanvasPainter::strokeRect(const QRectF &rect)
Zeichnet ein umrandetes Rechteck in „ rect “. Hierbei handelt es sich um eine überladene Methode, die „ QRectF “ verwendet.
Hinweis: Diese Funktion dient der Vereinfachung. Wenn Sie mehr als nur ein Rechteck mit Umrandung zeichnen möchten, verwenden Sie vorzugsweise ` rect()`.
Dies ist eine überladene Funktion.
QRectF QCanvasPainter::textBoundingBox(const QString &text, qreal x, qreal y, qreal maxWidth = 0) const
Misst die Begrenzungsbox einer Zeichenkette vom Typ „ text “ an den Koordinaten (x, y).
Um mehrzeiligen Text zu messen, setzen Sie den Zeilenumbruchmodus mit ` setTextWrapMode()` auf einen anderen Wert als den Standardwert ` NoWrap`. Setzen Sie außerdem den optionalen Parameter ` maxWidth ` auf die gewünschte Zeilenbreite in Pixeln.
Gibt ` QRectF ` mit den Werten [xmin, ymin, width, height] zurück. Die gemessenen Werte werden im lokalen Koordinatensystem zurückgegeben.
![]() | |
QRectF QCanvasPainter::textBoundingBox(const QString &text, const QRectF &rect) const
Misst den Begrenzungsrahmen einer Zeichenkette vom Typ „ text “ unter rect. Gibt „ QRectF “ mit den Werten [xmin, ymin, width, height] zurück. Die gemessenen Werte werden im lokalen Koordinatensystem zurückgegeben.
Dies ist eine überladene Funktion.
QRectF QCanvasPainter::textBoundingBox(const QString &text, QPointF point, qreal maxWidth = 0) const
Misst die Begrenzungsbox einer „ text “-Zeichenkette unter point.
Um mehrzeiligen Text zu messen, legen Sie den Zeilenumbruchmodus mit ` setTextWrapMode()` auf einen anderen Wert als den Standardwert ` NoWrap` fest. Setzen Sie außerdem den optionalen Parameter ` maxWidth ` auf die gewünschte Zeilenbreite in Pixeln.
Gibt ` QRectF ` mit den Werten [xmin, ymin, width, height] zurück. Die gemessenen Werte werden im lokalen Koordinatensystem zurückgegeben.
Dies ist eine überladene Funktion.
void QCanvasPainter::transform(const QTransform &transform)
Multipliziert das aktuelle Koordinatensystem mit dem angegebenen Skalierungsfaktor ` transform`.
![]() | |
Siehe auch ` setTransform()`.
void QCanvasPainter::translate(qreal x, qreal y)
Verschiebt das aktuelle Koordinatensystem um x und y.
![]() | |
void QCanvasPainter::translate(QPointF point)
Verschiebt das aktuelle Koordinatensystem um point.
Dies ist eine überladene Funktion.
© 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.































































