QCanvasPainter Class
Die Klasse QCanvasPainter führt hardware-beschleunigtes Malen auf QRhi durch. Mehr...
| Kopfzeile: | #include <QCanvasPainter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| Seit: | Qt 6.11 |
| Status: | Technische Vorschau |
Öffentliche Typen
| enum class | CompositeOperation { SourceOver, SourceAtop, DestinationOut } |
| enum class | ImageFlag { GenerateMipmaps, RepeatX, RepeatY, Repeat, FlipY, …, NativeTexture } |
| 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 | RenderHint { Antialiasing, HighQualityStroking, DisableWindingEnforce } |
| flags | RenderHints |
| 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(float centerX, float centerY, float radius, float a0, float a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected) |
| void | arc(QPointF centerPoint, float radius, float a0, float a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected) |
| void | arcTo(float x1, float y1, float x2, float y2, float radius) |
| void | arcTo(QPointF controlPoint1, QPointF controlPoint2, float radius) |
| void | beginHoleSubPath() |
| void | beginPath() |
| void | beginSolidSubPath() |
| void | bezierCurveTo(float cp1X, float cp1Y, float cp2X, float cp2Y, float x, float y) |
| void | bezierCurveTo(QPointF controlPoint1, QPointF controlPoint2, QPointF endPoint) |
| void | circle(float centerX, float centerY, float radius) |
| void | circle(QPointF centerPoint, float radius) |
| void | cleanupResources() |
| void | clearRect(float x, float y, float width, float height) |
| void | clearRect(const QRectF &rect) |
| void | closePath() |
| QCanvasOffscreenCanvas | createCanvas(QSize pixelSize, int sampleCount = 1, QCanvasOffscreenCanvas::Flags flags = {}) |
| void | destroyCanvas(QCanvasOffscreenCanvas &canvas) |
| float | devicePixelRatio() const |
| void | drawBoxShadow(const QCanvasBoxShadow &shadow) |
| void | drawImage(const QCanvasImage &image, float x, float 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, float x, float y, float width, float height) |
| void | ellipse(float centerX, float centerY, float radiusX, float radiusY) |
| void | ellipse(const QRectF &rect) |
| void | ellipse(QPointF centerPoint, float radiusX, float radiusY) |
| void | fill() |
| void | fill(const QCanvasPath &path, int pathGroup = 0) |
| void | fillRect(float x, float y, float width, float height) |
| void | fillRect(const QRectF &rect) |
| void | fillText(const QString &text, float x, float y, float maxWidth = -1) |
| void | fillText(const QString &text, const QRectF &rect) |
| void | fillText(const QString &text, QPointF point, float maxWidth = -1) |
| QTransform | getTransform() const |
| void | lineTo(float x, float y) |
| void | lineTo(QPointF point) |
| void | moveTo(float x, float y) |
| void | moveTo(QPointF point) |
| void | quadraticCurveTo(float cpX, float cpY, float x, float y) |
| void | quadraticCurveTo(QPointF controlPoint, QPointF endPoint) |
| void | rect(float x, float y, float width, float height) |
| void | rect(const QRectF &rect) |
| void | removeImage(const QCanvasImage &image) |
| void | removePathGroup(int pathGroup) |
| QCanvasPainter::RenderHints | renderHints() const |
| void | reset() |
| void | resetClipping() |
| void | resetTransform() |
| void | restore() |
| void | rotate(float angle) |
| void | roundRect(float x, float y, float width, float height, float radius) |
| void | roundRect(const QRectF &rect, float radius) |
| void | roundRect(const QRectF &rect, float radiusTopLeft, float radiusTopRight, float radiusBottomRight, float radiusBottomLeft) |
| void | roundRect(float x, float y, float width, float height, float radiusTopLeft, float radiusTopRight, float radiusBottomRight, float radiusBottomLeft) |
| void | save() |
| void | scale(float scale) |
| void | scale(float scaleX, float scaleY) |
| void | setAntialias(float antialias) |
| void | setBrushTransform(const QTransform &transform) |
| void | setClipRect(float x, float y, float width, float height) |
| void | setClipRect(const QRectF &rect) |
| void | setFillStyle(const QColor &color) |
| void | setFillStyle(const QCanvasBrush &brush) |
| void | setFont(const QFont &font) |
| void | setGlobalAlpha(float alpha) |
| void | setGlobalBrightness(float value) |
| void | setGlobalCompositeOperation(QCanvasPainter::CompositeOperation operation) |
| void | setGlobalContrast(float value) |
| void | setGlobalSaturate(float value) |
| void | setLineCap(QCanvasPainter::LineCap cap) |
| void | setLineJoin(QCanvasPainter::LineJoin join) |
| void | setLineWidth(float width) |
| void | setMiterLimit(float limit) |
| void | setPathWinding(QCanvasPainter::PathWinding winding) |
| void | setRenderHint(QCanvasPainter::RenderHint hint, bool on = true) |
| void | setRenderHints(QCanvasPainter::RenderHints hints, bool on = true) |
| void | setStrokeStyle(const QColor &color) |
| void | setStrokeStyle(const QCanvasBrush &brush) |
| void | setTextAlign(QCanvasPainter::TextAlign align) |
| void | setTextAntialias(float antialias) |
| void | setTextBaseline(QCanvasPainter::TextBaseline baseline) |
| void | setTextDirection(QCanvasPainter::TextDirection direction) |
| void | setTextLineHeight(float height) |
| void | setTextWrapMode(QCanvasPainter::WrapMode wrapMode) |
| void | setTransform(const QTransform &transform) |
| void | skew(float angleX, float angleY = 0.0f) |
| void | stroke() |
| void | stroke(const QCanvasPath &path, int pathGroup = 0) |
| void | strokeRect(float x, float y, float width, float height) |
| void | strokeRect(const QRectF &rect) |
| QRectF | textBoundingBox(const QString &text, float x, float y, float maxWidth = -1) |
| QRectF | textBoundingBox(const QString &text, const QRectF &rect) |
| QRectF | textBoundingBox(const QString &text, QPointF point, float maxWidth = -1) |
| void | transform(const QTransform &transform) |
| void | translate(float x, float y) |
| void | translate(QPointF point) |
Statische öffentliche Mitglieder
Detaillierte Beschreibung
Qt Canvas Painter (QCanvasPainter) bietet eine Mal-API, die für hardwarebeschleunigtes (GPU) Malen optimiert ist. Die API lehnt sich eng an die HTML Canvas 2D Context Spezifikation an, die nach Qt C++ portiert wurde. Sie ist auch von QPainter beeinflusst, hat aber eine kompaktere API.
Hier ist ein einfaches Beispiel für die Verwendung von QCanvasPainter zur Erstellung eines runden Buttons.
![]() | QRectF rect(40, 70, 120, 60); QRectF shadowRect = rect.translated(2, 4); // Paint shadow QCanvasBoxShadow shadow(shadowRect, 30, 15, "#60373F26"); p->drawBoxShadow(shadow); // Paint rounded rect p->beginPath(); p->roundRect(rect, 30); p->setFillStyle("#DBEB00"); p->fill(); // Paint text p->setTextAlign(QCanvasPainter::TextAlign::Center); p->setTextBaseline(QCanvasPainter::TextBaseline::Middle); QFont font("Titillium Web", 18); p->setFont(font); p->setFillStyle("#373F26"); p->fillText("CLICK!", rect); |
Hier ist ein weiteres Beispiel für das Malen eines einfachen Diagramms.
![]() | // Paint grid QCanvasGridPattern grid(0, 0, 10, 10, "#404040", "#202020"); p->setFillStyle(grid); p->fillRect(0, 0, width(), height()); // Paint axis p->setFillStyle(QColorConstants::White); p->fillRect(0, 0.5 * height() - 1, width(), 2); p->fillRect(0.5 * width() - 1, 0, 2, height()); // Paint shadowed graph p->beginPath(); p->moveTo(20, height() * 0.8); p->bezierCurveTo(width() * 0.2, height() * 0.4, width() * 0.5, height() * 0.8, width() - 20, height() * 0.2); p->setAntialias(10); p->setLineWidth(12); p->setStrokeStyle("#D0000000"); p->stroke(); p->setAntialias(1); p->setLineWidth(6); QCanvasLinearGradient lg(0, 0, 0, height()); lg.setStartColor(QColorConstants::Red); lg.setEndColor(QColorConstants::Green); p->setStrokeStyle(lg); p->stroke(); |
Eigenschaften
QCanvasPainter lehnt sich in den meisten Teilen und von der Namensgebung her eng an den HTML Canvas 2D Context (https://html.spec.whatwg.org/multipage/canvas.html#2dcontext) an. Dies macht die API für viele Entwickler vertraut und ermöglicht die einfache Wiederverwendung von vorhandenem Canvas-Code. Aber das Ziel ist NICHT, 100% kompatibel mit dem HTML Canvas zu sein. QCanvasPainter lässt einige Funktionen vermissen, um es einfacher zu machen, leistungsfähiger auf QRhi hardwarebeschleunigte Grafik-API, und um besser auf moderne UI-Anforderungen zu zielen. Aus diesen Gründen hat QCanvasPainter auch zusätzliche Funktionen im Vergleich zu HTML Canvas 2D Context.
Dies sind einige der Funktionen, die wir im Vergleich zu HTML Canvas zumindest derzeit vermissen:
- Clipping: Alle Beschneidungen sind (transformierte) Rechtecke und Beschneidungen auf Pfadformen werden nicht unterstützt.
- Füllmodus: Es wird nur der Standard-Füllmodus Non-zero unterstützt, keine Unterstützung für geradzahlige Füllmodi.
- Striche: Striche sind immer durchgezogene Linien, gestrichelte/gepunktete Strichmuster werden nicht unterstützt.
- Pfad-Prüfung: Es gibt keine isPointInPath() oder isPointInStroke() Methoden.
- Text-Striche: Keine Unterstützung für Umrisslinien von Text.
- Filter: Canvas SVG Filtereffekte werden nicht unterstützt.
- ZusammengesetzteModi: Die Anzahl der Composite-Modi ist auf 3 begrenzt, die ohne Rendering in zusätzliche Puffer unterstützt werden können.
- Schatten: Eingebaute Schattenmethoden werden nicht unterstützt.
Auf der anderen Seite bietet QCanvasPainter im Vergleich zu HTML-Canvas einige zusätzliche Funktionen:
- Pfadgruppen: QCanvasPainter ermöglicht das Malen auf statischen Pfaden und das Zwischenspeichern dieser Pfade als Gruppen für eine optimale GPU-Nutzung.
- Einstellbares Antialiasing: Durch das Antialiasing von Pfadvertexen und das SDF-Textrendering kann die Pixelmenge des Antialiasing frei eingestellt werden, um ein glatteres Malen zu ermöglichen.
- Box-Gradient: Zusätzlich zu linearen, radialen und konischen Farbverläufen unterstützt QCanvasPainter auch abgerundete rechteckige Box-Farbverläufe.
- Box-Schatten: QCanvasPainter unterstützt auch CSS-Box-Shadow-Pinsel. Das Rendering verwendet einen SDF-Ansatz, der dem von Qt Quick RectangularShadow ähnelt, was es sehr leistungsfähig macht.
- Raster-Muster: QCanvasPainter unterstützt QCanvasGridPattern für dynamische Raster- und Balkenmusterstile.
- Benutzerdefinierte Pinsel: QCanvasPainter ermöglicht auch das Füllen und Streichen mit benutzerdefinierten Vertex- und Fragment-Shadern (QCanvasCustomBrush). Diese benutzerdefinierten Pinsel können auch für Text verwendet werden.
- Textumbruch: QCanvasPainter unterstützt den automatischen Umbruch von Text in mehrere Zeilen, mit verschiedenen Umbruchmodi.
- Farbeffekte: Zusätzlich zu globalAlpha unterstützt QCanvasPainter auch globale Helligkeit, Kontrast und Sättigung.
- Getönte Bilder: QCanvasPainter bietet Unterstützung für Farbtöne für gemalte Bilder und Bildmuster.
QCanvasPainter ist architekturunabhängig und kann sowohl für Qt Quick als auch für Qt Widgets verwendet werden. Eigentlich ist er auch ohne diese beiden Anwendungen verwendbar, nur mit QWindow und QRhi. Um QCanvasPainter zu nutzen, verwenden Sie ihn von einer dieser Klassen aus, abhängig von der Architektur Ihrer Anwendung:
- Qt Quick: Verwenden Sie QCanvasPainterItem und QCanvasPainterItemRenderer.
- Qt Widgets: Verwenden Sie QCanvasPainterWidget.
- QRhi-basierten QWindow, oder Offscreen-Puffer QRhi: Verwenden Sie QCanvasPainterFactory und QCanvasRhiPaintDriver.
Regeln zum Füllen
QCanvasPainter verwendet nonzero (WindingFill) Füllregeln. Um die Füllung basierend auf der Richtung des Pfadpunktes auszuwählen, deaktivieren Sie den Wickelzwang, indem Sie den DisableWindingEnforce Rendering-Hinweis mit setRenderHint() setzen.
![]() | p->setRenderHint(QCanvasPainter::RenderHint::DisableWindingEnforce); p->beginPath(); // Outer shape, counterclockwise p->moveTo(20, 20); p->lineTo(100, 180); p->lineTo(180, 20); p->closePath(); // Inner shape, clockwise p->moveTo(100, 40); p->lineTo(125, 90); p->lineTo(75, 90); p->closePath(); p->fill(); p->stroke(); |
Ein häufigerer Fall ist jedoch, sich auf die Erzwingung der Wicklung zu verlassen und die bevorzugte Wicklung mit setPathWinding() oder beginHoleSubPath() und beginSolidSubPath() Hilfen zu setzen.
![]() | p->beginPath(); p->roundRect(20, 20, 160, 160, 30); // Start painting holes p->beginHoleSubPath(); p->roundRect(40, 40, 120, 120, 10); // Start painting solid p->beginSolidSubPath(); p->rect(60, 60, 80, 20); p->circle(100, 120, 20); p->fill(); p->stroke(); |
Dokumentation der Mitgliedstypen
enum class QCanvasPainter::CompositeOperation
Qt Canvas Painter unterstützt 3 zusammengesetzte Operationen:
| Konstante | 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 sich mit dem vorhandenen Inhalt überschneidet. |
QCanvasPainter::CompositeOperation::DestinationOut | 2 | Der vorhandene Inhalt wird dort beibehalten, wo er sich nicht mit der neuen Form überschneidet. |
Siehe auch setGlobalCompositeOperation().
enum class QCanvasPainter::ImageFlag
flags QCanvasPainter::ImageFlags
Diese Aufzählung spezifiziert Flags, die sich auf Bilder beziehen. Verwenden Sie sie mit addImage(), um die Flags zu setzen.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::ImageFlag::GenerateMipmaps | 1 << 0 | Setzen Sie dies, um Mipmaps für das Bild zu erzeugen. Mipmaps sollten verwendet werden, wenn eine glattere Ausgabe für Bilder bevorzugt wird, die auf eine kleinere als die Originalgröße skaliert werden. |
QCanvasPainter::ImageFlag::RepeatX | 1 << 1 | Mit Bildmuster verwenden, um das Bild in der X-Koordinate zu wiederholen. |
QCanvasPainter::ImageFlag::RepeatY | 1 << 2 | Mit Bildmuster verwenden, um das Bild in der Y-Koordinate zu wiederholen. |
QCanvasPainter::ImageFlag::Repeat | RepeatX | RepeatY | Verwenden Sie mit Bildmuster, um das Bild in beiden Koordinaten zu wiederholen. |
QCanvasPainter::ImageFlag::FlipY | 1 << 3 | Spiegelt (inversiert) das Bild beim Rendern in Y-Richtung. |
QCanvasPainter::ImageFlag::Premultiplied | 1 << 4 | Bilddaten haben vormultipliziertes Alpha. |
QCanvasPainter::ImageFlag::Nearest | 1 << 5 | Bildinterpolation ist Nearest statt Linear |
QCanvasPainter::ImageFlag::NativeTexture | 1 << 6 | Bedeutet, dass es sich um eine Textur außerhalb von QCanvasPainter handelt. |
Der Typ ImageFlags ist ein Typedef für QFlags<ImageFlag>. Er speichert eine ODER-Kombination von ImageFlag-Werten.
enum class QCanvasPainter::LineCap
LineCap wird verwendet, um zu definieren, wie das Ende der Linie (Cap) gezeichnet wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::LineCap::Butt | 0 | (Standard) Quadratisches Linienende, das den Endpunkt der Linie nicht verdeckt. |
QCanvasPainter::LineCap::Round | 1 | Rundes Linienende. |
QCanvasPainter::LineCap::Square | 2 | Quadratisches Linienende, das den Endpunkt überdeckt und um die Hälfte der Linienbreite darüber hinausgeht. |
Siehe auch setLineCap().
enum class QCanvasPainter::LineJoin
LineJoin wird verwendet, um zu definieren, wie die Verbindungen zwischen zwei verbundenen Linien gezeichnet werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::LineJoin::Round | 0 | Der Kreisbogen zwischen den beiden Linien wird gefüllt. |
QCanvasPainter::LineJoin::Bevel | 1 | Die dreieckige Kerbe zwischen den beiden Linien wird ausgefüllt. |
QCanvasPainter::LineJoin::Miter | 2 | (Voreinstellung) 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 anzugeben, ob der neue Pfad mit dem letzten Punkt des vorherigen Pfades 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 gezogen. |
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
PathWinding wird verwendet, um die Richtung der Pfadzeichnung anzugeben. Diese Richtung wird verwendet, um zu bestimmen, ob ein Unterpfad im Pfad durchgängig oder durchlöchert ist.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::PathWinding::CounterClockWise | 0 | (Standardwert) Gegen den Uhrzeigersinn für Volumenkörper. |
QCanvasPainter::PathWinding::ClockWise | 1 | Im Uhrzeigersinn für Löcher. |
Siehe auch setPathWinding().
enum class QCanvasPainter::RenderHint
flags QCanvasPainter::RenderHints
Diese Aufzählung gibt Flags für QCanvasPainter an, die sich auf das Rendern beziehen. Verwenden Sie setRenderHint(), um die Flags zu setzen.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::RenderHint::Antialiasing | 1 << 0 | Durch das Setzen auf false wird Antialiasing deaktiviert. Die Aktivierung führt zu höheren Rendering-Kosten. Der Standardwert ist true. |
QCanvasPainter::RenderHint::HighQualityStroking | 1 << 1 | Die Einstellung true bewirkt eine korrektere Darstellung in einigen weniger häufigen Fällen, in denen Striche überlappen und nicht die volle Deckkraft haben. Die Aktivierung dieser Option führt zu höheren Rendering-Kosten. Der Standardwert ist false. |
QCanvasPainter::RenderHint::DisableWindingEnforce | 1 << 2 | Das Setzen auf true deaktiviert die Erzwingung von Pfadverläufen, die dem entsprechen, was in setPathWinding() eingestellt wurde. Die Deaktivierung ermöglicht z.B. das Erstellen von Löchern in Pfaden, indem die Punkte in taktweiser Reihenfolge hinzugefügt werden. Die Deaktivierung kann auch die Leistung erhöhen. |
Der Typ RenderHints ist ein Typedef für QFlags<RenderHint>. Er speichert eine ODER-Kombination von RenderHint-Werten.
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 | Richtet die Mitte des Textes horizontal an der angegebenen Position aus. |
QCanvasPainter::TextAlign::Start | 3 | (Standard) Der Text wird am normalen Zeilenanfang ausgerichtet (linksbündig für links-nach-rechts-Gebiete, rechtsbündig für rechts-nach-links-Gebiete). |
QCanvasPainter::TextAlign::End | 4 | Der Text wird am normalen Ende der Zeile ausgerichtet (rechtsbündig für links-nach-rechts-Sprachumgebungen, linksbündig für rechts-nach-links-Sprachumgebungen). |
Siehe auch setTextAlign(), setTextDirection(), und fillText().
enum class QCanvasPainter::TextBaseline
TextBaseline wird verwendet, um festzulegen, wie der Text vertikal ausgerichtet (baselined) ist.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::TextBaseline::Top | 0 | Richtet den oberen Teil 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 | Die Mitte des Textes vertikal an der angegebenen Position ausrichten. |
QCanvasPainter::TextBaseline::Alphabetic | 3 | (Standard) Richtet die Grundlinie des Textes vertikal an der angegebenen Position aus. |
QCanvasPainter::TextBaseline::Bottom | 4 | Richtet den unteren Rand des Textes vertikal an der angegebenen Position aus. |
Siehe auch setTextBaseline() und fillText().
enum class QCanvasPainter::TextDirection
TextDirection wird verwendet, um festzulegen, wie der Text horizontal ausgerichtet ist.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::TextDirection::LeftToRight | 0 | Die Textausrichtung ist von links nach rechts. |
QCanvasPainter::TextDirection::RightToLeft | 1 | Die Textausrichtung ist rechts-nach-links. |
QCanvasPainter::TextDirection::Inherit | 2 | (Standard) Die Textrichtung wird von QGuiApplication layoutDirection geerbt. Siehe https://doc.qt.io/qt-6/qguiapplication.html#layoutDirection-prop. |
QCanvasPainter::TextDirection::Auto | 3 | Die Textrichtung wird automatisch anhand des Textstrings erkannt. Siehe QString::isRightToLeft(). |
Hinweis: Da dies eine Analyse des Textes erfordert, ist es potenziell langsamer als andere Optionen.
Siehe auch setTextDirection(), setTextAlign(), und fillText().
enum class QCanvasPainter::WrapMode
WrapMode wird verwendet, um festzulegen, wie der Text in mehrere Zeilen umgebrochen wird.
| Konstante | Wert | Beschreibung |
|---|---|---|
QCanvasPainter::WrapMode::NoWrap | 0 | (Standard) Es wird kein Umbruch durchgeführt. Enthält der Text nicht genügend Zeilenumbrüche, dann überschreitet contentWidth eine festgelegte Breite. |
QCanvasPainter::WrapMode::Wrap | 1 | Wenn möglich, erfolgt der Umbruch an einer Wortgrenze, andernfalls an der entsprechenden Stelle in der Zeile, auch mitten in einem Wort. |
QCanvasPainter::WrapMode::WordWrap | 2 | Der Umbruch erfolgt nur an Wortgrenzen. Wenn ein Wort zu lang ist, überschreitet die Breite des Inhalts die eingestellte Breite. |
QCanvasPainter::WrapMode::WrapAnywhere | 3 | Der Umbruch erfolgt an jeder Stelle einer Zeile, auch wenn er in der Mitte eines Wortes stattfindet. |
Siehe auch setTextWrapMode() und fillText().
Dokumentation der Mitgliedsfunktionen
QCanvasPainter::QCanvasPainter()
Konstruiert einen Maler.
[noexcept] QCanvasPainter::~QCanvasPainter()
Zerstört 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 extern verwalteten 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 Speichers zurück, der von den Bild-(Pixel-)Daten für alle aktiven QCanvasImage -Instanzen für diesen Painter verwendet wird, die durch die addImage()-Überladung unter Verwendung eines QImage erstellt wurden. Sie umfasst auch die Daten von intern erstellten Bildern für gradients.
QCanvasPainter behält keine Kopien der CPU-seitigen QImage Daten, sobald addImage() zurückgekehrt ist. Daher ist das Ergebnis dieser Funktion ein Näherungswert für den GPU-Speicher, der für Texturen verwendet wird.
Hinweis: Der Wert ist nur eine Schätzung basierend auf dem Bildformat und den Abmessungen. Qt hat keine Kenntnis darüber, wie die Daten für Texturen auf der GPU-Seite gespeichert und im Speicher angeordnet sind.
Offscreen-Leinwände und extern verwaltete Texturen, die über die anderen addImage()-Überladungen registriert wurden, werden von dieser Funktion nicht berücksichtigt.
Für jede gültige QCanvasImage kann die individuelle Größe in Bytes immer 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 aber 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 als Textur für den Maler hinzu. Gibt QCanvasImage mit der Textur-ID und anderen Informationen über das Bild zurück. Die zurückgegebene QCanvasImage kann dann mit drawImage und QCanvasImagePattern verwendet werden. Nach dem Aufruf dieser Methode muss image QImage nicht im Speicher gehalten werden.
Der Aufruf mit demselben image ist eine billige Operation, da ein Cache-Treffer erwartet wird.
Bei der Optimierung muss darauf geachtet werden, addImage() nur einmal aufzurufen. Je nach Anwendungsdesign ist dies nicht immer ausreichend. Wenn zum Beispiel die zugrundeliegenden Grafikressourcen verloren gehen, z.B. weil der Painter mit einem neuen QRhi unter der Haube verbunden ist, weil ein Widget auf eine neue Top-Ebene verschoben wurde, dann ist der Aufruf dieser Funktion unerlässlich, um die nativen Grafiktexturen von image neu zu erstellen.
Siehe auch drawImage() und removeImage().
QCanvasImage QCanvasPainter::addImage(QRhiTexture *texture, QCanvasPainter::ImageFlags flags = {})
Fügt texture mit flags als Textur für den Maler hinzu. Das Flag NativeTexture wird implizit gesetzt. Die zurückgegebene QCanvasImage kann mit drawImage und QCanvasImagePattern verwendet werden.
Hinweis: Der Besitz von texture wird 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, so dass 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, d. h. removeImage() macht canvas nicht ungültig.
Dies ist eine überladene Funktion.
Siehe auch drawImage() und removeImage().
void QCanvasPainter::addPath(const QPainterPath &path)
Fügt path in den aktuellen Pfad ein.
Hinweis: QCanvasPainter verwendet die Füllregel WindingFill (ungleich Null), was bedeutet, dass alle QPainterPaths nicht korrekt gerendert werden. Dies ist zum Beispiel bemerkenswert, wenn der Pfad Textzeichen mit Löchern enthält.
Hinweis: Diese Methode ist hauptsächlich für die Kompatibilität mit QPainter und QPainterPath verfügbar. Sie erhöht nicht die Leistung im Vergleich zum direkten Malen des Pfades mit QCanvasPainter Methoden.
void QCanvasPainter::addPath(const QCanvasPath &path, const QTransform &transform = QTransform())
Fügt path in den aktuellen Pfad ein und verwendet optional transform, um die Pfadpunkte zu ändern. Wenn transform nicht angegeben ist (oder es sich um eine Identitätsmatrix handelt), ist dieser Vorgang sehr schnell, da er die Pfaddaten wiederverwendet.
![]() | // m_path is QCanvasPath if (m_path.isEmpty()) m_path.circle(60, 60, 40); p->beginPath(); p->addPath(m_path); p->addPath(m_path, QTransform::fromTranslate(80, 80)); p->fill(); p->stroke(); |
void QCanvasPainter::addPath(const QCanvasPath &path, qsizetype start, qsizetype count, const QTransform &transform = QTransform())
Fügt path in den aktuellen Pfad ein, beginnend mit dem Befehl unter start und einschließlich der Anzahl der Befehle unter count. Optional kann transform verwendet werden, um die Pfadpunkte zu ändern. Der Bereich von start und count wird überprüft, so dass nicht mehr Befehle als QCanvasPath::commandsSize() aufgerufen werden. Falls der Pfad nicht von der aktuellen Pfadposition aus fortgesetzt werden soll, rufen Sie zuerst moveTo() auf, z. B. mit path.positionAt(start - 1).
![]() | // m_path is QCanvasPath if (m_path.isEmpty()) { m_path.moveTo(20, 60); for (int i = 1; i < 160; i++) { m_path.lineTo(20 + i, 60 + 20 * sin(0.1 * i)); } } p->stroke(m_path); p->beginPath(); p->addPath(m_path, 20, 100, QTransform::fromTranslate(0, 80)); p->stroke(); |
void QCanvasPainter::arc(float centerX, float centerY, float radius, float a0, float a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
Erzeugt einen neuen kreisbogenförmigen Unterpfad. 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) gekehrt. Wenn connection gleich NotConnected ist, fügt arc keine Linie von der vorherigen Pfadposition zum Beginn des Bogens hinzu. Winkel werden in Radiant angegeben.
![]() | p->beginPath(); p->moveTo(100, 100); p->arc(100, 100, 80, 0, 1.5 * M_PI); p->closePath(); p->fill(); p->stroke(); |
Hinweis: Während der HTML-Canvas-2D-Kontext arc() zum Zeichnen von Kreisen verwendet, wird bei QCanvasPainter empfohlen, circle() oder ellipse() zu verwenden.
void QCanvasPainter::arc(QPointF centerPoint, float radius, float a0, float a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
Erzeugt einen neuen kreisbogenförmigen Unterpfad. Der Mittelpunkt des Bogens liegt bei centerPoint, mit radius, und der Bogen wird vom Winkel a0 bis a1 gezeichnet und in direction (ClockWise oder CounterClockWise) gekehrt. Wenn connection gleich NotConnected ist, fügt arc keine Linie von der vorherigen Pfadposition zum Beginn des Bogens hinzu. Winkel werden in Radiant angegeben.
Hinweis: Während der HTML-Canvas-2D-Kontext arc() zum Zeichnen von Kreisen verwendet, wird bei QCanvasPainter empfohlen, circle() oder ellipse() zu verwenden.
Dies ist eine überladene Funktion.
void QCanvasPainter::arcTo(float x1, float y1, float x2, float y2, float radius)
Fügt ein Bogensegment an der durch den letzten Pfadpunkt definierten Ecke und zwei angegebenen Punkten (x1, y1 und x2, y2) mit radius hinzu. Der Bogen wird automatisch mit dem letzten Punkt des Pfades durch eine gerade Linie verbunden, falls erforderlich.
![]() | p->beginPath(); p->moveTo(20, 20); p->arcTo(240, 20, 20, 220, 50); p->arcTo(20, 220, 20, 20, 30); p->stroke(); |
void QCanvasPainter::arcTo(QPointF controlPoint1, QPointF controlPoint2, float radius)
Fügt ein Bogensegment an der durch den letzten Pfadpunkt definierten Ecke und zwei angegebenen Punkten (controlPoint1 und controlPoint2) mit radius hinzu. Der Bogen wird automatisch mit dem letzten Punkt des Pfades durch eine gerade Linie verbunden, falls erforderlich.
Dies ist eine überladene Funktion.
void QCanvasPainter::beginHoleSubPath()
Starten Sie einen Loch-Unterpfad. Dies ist gleichbedeutend mit setPathWinding(QCanvasPainter::PathWinding::ClockWise))
![]() | p->beginPath(); p->circle(100, 100, 80); p->beginHoleSubPath(); p->rect(60, 60, 80, 80); p->beginSolidSubPath(); p->circle(100, 100, 20); p->fill(); p->stroke(); |
Siehe auch beginSolidSubPath().
void QCanvasPainter::beginPath()
Beginnt mit dem Zeichnen eines neuen Pfades, während der aktuelle Pfad gelöscht wird.
void QCanvasPainter::beginSolidSubPath()
Starten Sie einen festen Unterpfad. Dies ist äquivalent zu setPathWinding(QCanvasPainter::PathWinding::CounterClockWise))
Siehe auch beginHoleSubPath().
void QCanvasPainter::bezierCurveTo(float cp1X, float cp1Y, float cp2X, float cp2Y, float x, float y)
Fügt ein kubisches Bezier-Segment vom letzten Punkt des Pfades über zwei Kontrollpunkte (cp1X, cp1Y und cp2X, cp2Y) zum angegebenen Punkt (x, y) hinzu.
![]() | p->beginPath(); p->moveTo(20, 20); p->bezierCurveTo(150, 50, 50, 250, 180, 120); p->stroke(); |
void QCanvasPainter::bezierCurveTo(QPointF controlPoint1, QPointF controlPoint2, QPointF endPoint)
Fügt ein kubisches Bezier-Segment vom letzten Punkt des Pfades über zwei Kontrollpunkte (controlPoint1 und controlPoint2) zum angegebenen Punkt endPoint hinzu.
Dies ist eine überladene Funktion.
void QCanvasPainter::circle(float centerX, float centerY, float radius)
Erzeugt einen neuen kreisförmigen Unterpfad in ( centerX, centerY) mit radius.
![]() | p->beginPath(); p->circle(100, 100, 80); p->fill(); p->stroke(); |
void QCanvasPainter::circle(QPointF centerPoint, float radius)
Erzeugt einen neuen kreisförmigen Unterpfad in centerPoint mit radius.
Dies ist eine überladene Funktion.
void QCanvasPainter::cleanupResources()
Plant das Löschen von unbenutzten Texturen aus dem Cache.
Zusätzlich können andere Caches und Pools beim Aufruf dieser Funktion verkleinert werden, um den Speicherverbrauch zu minimieren. Dies kann möglicherweise zu teureren Zeichenaufrufen im Nachhinein führen.
void QCanvasPainter::clearRect(float x, float y, float width, float height)
Löscht die Pixel in einem rechteckigen Bereich, indem das durch x, y, width, height angegebene Rechteck mit transparentem Schwarz gefüllt wird. Da das Löschen keine Überblendung erfordert, kann es schneller sein als fillRect().
![]() | p->beginPath(); p->circle(100, 100, 80); p->fill(); p->stroke(); p->clearRect(60, 0, 80, 120); |
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. Dies ist eine überladene Methode mit QRectF.
Dies ist eine überladene Funktion.
void QCanvasPainter::closePath()
Schließt den aktuellen Unterpfad mit einem Liniensegment ab. Dies ist äquivalent zu lineTo([Startpunkt]) als letztes Pfadelement.
QCanvasOffscreenCanvas QCanvasPainter::createCanvas(QSize pixelSize, int sampleCount = 1, QCanvasOffscreenCanvas::Flags flags = {})
Gibt eine neue Offscreen-Leinwand mit den angegebenen pixelSize, sampleCount und flags zurück.
Die Größe der Leinwand wird in Pixeln angegeben. Die Eigenschaften pixelSize, sampleCount und flags sind danach unveränderlich. Um eine Leinwand mit einer anderen Größe, Anzahl der Samples oder Flaggen zu erhalten, erstellen Sie eine neue Leinwand.
Um einen Offscreen-Canvas mit Zeichenbefehlen anzusteuern, rufen Sie die entsprechende Überladung QCanvasRhiPaintDriver::beginPaint() auf, wenn Sie mit der API auf niedrigerer Ebene arbeiten, oder QCanvasPainterWidget::beginCanvasPainting() oder QCanvasPainterItemRenderer::beginCanvasPainting(), wenn Sie die Convenience-Widget- oder Qt Quick Item-Klassen verwenden.
Normalerweise wird der Inhalt des Canvas geleert, wenn darauf gemalt wird. Um dies zu deaktivieren, übergeben Sie PreserveContents in flags.
Um Multisample-Rendering auf dem Canvas anzufordern (Multisample-Antialiasing, MSAA), setzen Sie eine Sampleanzahl größer als 1, z. B. 4 oder 8. Die Beibehaltung des Canvas-Inhalts zwischen den Rendering-Durchgängen wird jedoch nicht unterstützt, wenn Multisampling aktiviert ist, und das Flag PreserveContents funktioniert in diesem Fall nicht.
void QCanvasPainter::destroyCanvas(QCanvasOffscreenCanvas &canvas)
Zerstört die Ressourcen, die canvas unterstützen. canvas wird dann zu null canvas.
Der Painter tut dies automatisch bei seiner Zerstörung. Daher ist der Aufruf dieser Funktion nur notwendig, wenn die Freigabe der zugehörigen Ressourcen sofort gewünscht ist.
float QCanvasPainter::devicePixelRatio() const
Gibt das Verhältnis zwischen physischen Pixeln und geräteunabhängigen Pixeln zurück. Der Standardwert ist 1.0.
void QCanvasPainter::drawBoxShadow(const QCanvasBoxShadow &shadow)
Zeichnet einen Rahmen shadow. Der Schatten wird mit der Position, Größe, Farbe, Unschärfe usw. gezeichnet, die in shadow festgelegt sind. Der Aufruf von beginPath() vor dieser Methode ist nicht erforderlich.
Hinweis: Um den von drawBoxShadow() abgedeckten Bereich visuell zu sehen, setzen Sie die Umgebungsvariable QCPAINTER_DEBUG_SHADOW_RECT.
![]() | QRectF rect(40, 40, 120, 120); QRectF shadowRect = rect.translated(-2, 4); QCanvasBoxShadow shadow(shadowRect, 0, 30); p->drawBoxShadow(shadow); p->beginPath(); p->roundRect(rect, 30); p->setFillStyle("#2CDE85"); p->fill(); |
Siehe auch QCanvasBoxShadow.
void QCanvasPainter::drawImage(const QCanvasImage &image, float x, float y)
Zeichnet image in x, y, in seiner Standardgröße.
![]() | static QImage logo(":/qt_logo.png"); QCanvasImage image = p->addImage(logo); p->drawImage(image, 36, 36); |
Siehe auch addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &destinationRect)
Zeichnet image in 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)
Zeichnet image in Position und Größe von destinationRect, aus dem Bereich sourceRect des Bildes.
![]() | static QImage logo(":/qt_logo.png"); QCanvasImage image = p->addImage(logo); QRectF sourceRect(20, 30, 54, 76); QRectF destinationRect(0, 0, 200, 200); p->drawImage(image, sourceRect, destinationRect); |
Dies ist eine überladene Funktion.
Siehe auch addImage().
void QCanvasPainter::drawImage(const QCanvasImage &image, float x, float y, float width, float height)
Zeichnet image in x, y, bei gegebenem width und height.
![]() | static QImage logo(":/qt_logo.png"); QCanvasImage image = p->addImage(logo); p->drawImage(image, 50, 0, 100, 200); |
Dies ist eine überladene Funktion.
Siehe auch addImage().
void QCanvasPainter::ellipse(float centerX, float centerY, float radiusX, float radiusY)
Erzeugt einen neuen ellipsenförmigen Unterpfad in ( centerX, centerY) mit radiusX und radiusY.
![]() | p->beginPath(); p->ellipse(100, 100, 80, 60); p->fill(); p->stroke(); |
void QCanvasPainter::ellipse(const QRectF &rect)
Erzeugt einen neuen ellipsenförmigen Unterpfad in rect. Diese Ellipse wird den Bereich rect abdecken.
![]() | QRectF rect(40, 20, 120, 160); p->fillRect(rect); p->beginPath(); p->ellipse(rect); p->stroke(); |
Dies ist eine überladene Funktion.
void QCanvasPainter::ellipse(QPointF centerPoint, float radiusX, float radiusY)
Erzeugt einen neuen ellipsenförmigen Unterpfad in centerPoint mit radiusX und radiusY.
Dies ist eine überladene Funktion.
void QCanvasPainter::fill()
Füllt den aktuellen Pfad mit dem aktuellen Füllstil.
![]() | p->beginPath(); p->rect(20, 20, 40, 160); p->rect(140, 20, 40, 160); p->circle(100, 100, 60); p->fill(); |
Siehe auch setFillStyle().
void QCanvasPainter::fill(const QCanvasPath &path, int pathGroup = 0)
Füllt die path mit dem aktuellen Füllstil und gehört in pathGroup. Das Malen durch QCanvasPath ist optimal, wenn der Pfad mehr Befehle enthält und überwiegend statisch ist. Standardmäßig ist pathGroup gleich 0, so dass die erste Gruppe verwendet wird. Wenn pathGroup zu -1 gehört, wird der Pfad nicht auf der GPU-Seite zwischengespeichert. Weitere Informationen zur Verwendung von Pfad-Cache-Gruppen finden Sie in der Dokumentation QCanvasPath. Der Aufruf von beginPath() vor dieser Methode ist nicht erforderlich.
![]() | // m_path is QCanvasPath if (m_path.isEmpty()) { for (int i = 0; i < 16; i++) { float w = 100 + 60 * sin(i); m_path.rect(100 - w * 0.5, 22 + i * 10, w, 6); } } p->fill(m_path); |
Dies ist eine überladene Funktion.
Siehe auch setFillStyle().
void QCanvasPainter::fillRect(float x, float y, float width, float height)
Zeichnet ein gefülltes Rechteck an der angegebenen Position ( x, y) in der Größe width, height.
Hinweis: Dies dient der Bequemlichkeit. Wenn Sie mehr als nur ein einzelnes Rechteck füllen wollen, verwenden Sie lieber rect().
![]() | p->fillRect(20, 20, 160, 160); // The above code does same as: // p->beginPath(); // p->rect(20, 20, 160, 160); // p->fill(); |
void QCanvasPainter::fillRect(const QRectF &rect)
Zeichnet ein gefülltes Rechteck in rect. Dies ist eine überladene Methode, die QRectF verwendet.
Hinweis: Diese Methode dient der Bequemlichkeit. Wenn Sie mehr als nur ein einzelnes Rechteck füllen wollen, verwenden Sie lieber rect().
Dies ist eine überladene Funktion.
void QCanvasPainter::fillText(const QString &text, float x, float y, float maxWidth = -1)
Zeichnet die Zeichenkette text an der angegebenen Position ( x, y), mit der aktuellen textAlign und textBaseline. Um den Text in mehrere Zeilen umbrechen zu lassen, setzen Sie den optionalen Parameter maxWidth auf die gewünschte Zeilenbreite in Pixel. Am Anfang der Zeilen werden Leerzeichen entfernt, der Text wird an Wortgrenzen oder beim Auftreten von Zeilenumbrüchen geteilt. Wörter, die länger als die maximale Breite sind, werden am nächsten Zeichen getrennt (d. h. keine Silbentrennung).
void QCanvasPainter::fillText(const QString &text, const QRectF &rect)
Zeichnet die Zeichenkette text innerhalb von rect, mit der aktuellen textAlign und textBaseline. Die Breite des Rect-Parameters wird als maxWidth verwendet.
Dies ist eine überladene Methode, die QRectF verwendet. Es ist oft nützlich, die Textgrundlinie auf TextBaseline::Top oder TextBaseline::Middle zu setzen, wenn Text mit dieser Methode gezeichnet wird.
Dies ist eine überladene Funktion.
void QCanvasPainter::fillText(const QString &text, QPointF point, float maxWidth = -1)
Zeichnet die Zeichenkette text an der angegebenen Position point, mit der aktuellen textAlign und textBaseline. Um den Text in mehrere Zeilen umbrechen zu lassen, setzen Sie den optionalen Parameter maxWidth auf die gewünschte Zeilenbreite in Pixel. Leerzeichen werden am Anfang der Zeilen entfernt, der Text wird an Wortgrenzen oder beim Auftreten von Zeilenumbrüchen geteilt. Wörter, die länger als die maximale Breite sind, werden am nächsten Zeichen getrennt (d. h. keine Silbentrennung).
Dies ist eine überladene Methode, die QPointF verwendet.
Dies ist eine überladene Funktion.
QTransform QCanvasPainter::getTransform() const
Gibt die aktuelle Transformation zurück.
void QCanvasPainter::lineTo(float x, float y)
Fügt ein Liniensegment vom letzten Punkt des Pfades zum Punkt ( x, y) hinzu.
![]() | p->beginPath(); p->moveTo(20, 20); p->lineTo(140, 180); p->lineTo(180, 120); p->stroke(); |
void QCanvasPainter::lineTo(QPointF point)
Fügt ein Liniensegment vom letzten Punkt des Pfades zum point hinzu.
Dies ist eine überladene Funktion.
[static] float QCanvasPainter::mmToPx(float mm)
Statische Hilfsmethode zur Umwandlung von Millimetern mm in Pixel. Dies ermöglicht auflösungsunabhängiges Zeichnen. Zum Beispiel um die Linienbreite auf 2mm zu setzen:
painter->setLineWidth(QCanvasPainter::mmToPx(2));
void QCanvasPainter::moveTo(float x, float y)
Beginnt einen neuen Unterpfad mit ( x, y) als erstem Punkt.
void QCanvasPainter::moveTo(QPointF point)
Beginnt einen neuen Unterpfad mit point als erstem Punkt.
Dies ist eine überladene Funktion.
[static] float QCanvasPainter::ptToPx(float pt)
Statische Hilfsmethode zur Umwandlung von Punkten pt in Pixel.
void QCanvasPainter::quadraticCurveTo(float cpX, float cpY, float x, float y)
Fügt ein quadratisches Bezier-Segment vom letzten Punkt des Pfades über einen Kontrollpunkt (cpX, cpY) zum angegebenen Punkt (x, y) hinzu.
![]() | p->beginPath(); p->moveTo(20, 20); p->quadraticCurveTo(150, 50, 180, 180); p->quadraticCurveTo(20, 220, 20, 20); p->fill(); p->stroke(); |
void QCanvasPainter::quadraticCurveTo(QPointF controlPoint, QPointF endPoint)
Fügt ein quadratisches Bézier-Segment vom letzten Punkt des Pfades über eine controlPoint zum angegebenen endPoint hinzu.
Dies ist eine überladene Funktion.
void QCanvasPainter::rect(float x, float y, float width, float height)
Erzeugt einen neuen rechteckigen Unterpfad an der Position x, y mit der Größe width, height.
![]() | p->beginPath(); p->rect(20, 20, 160, 160); p->fill(); p->stroke(); |
void QCanvasPainter::rect(const QRectF &rect)
Erzeugt einen neuen rechteckigen Unterpfad auf rect. Dies ist eine überladene Methode mit QRectF.
Es handelt sich um eine überladene Funktion.
void QCanvasPainter::removeImage(const QCanvasImage &image)
Gibt die mit image verbundenen 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 es notwendig ist, den Speicherverbrauch zu reduzieren, weil viele Bilder vorhanden sind und einige von ihnen nicht mehr verwendet werden.
Hinweis: Entfernte Bilder können nicht mehr in Maloperationen verwendet werden.
Hinweis: Ressourcen wie Texturen, die mit der zugrunde liegenden 3D-API erstellt wurden, werden möglicherweise nicht sofort freigegeben. Solche Operationen können auf spätere Frames verschoben werden, typischerweise wenn diese QCanvasPainter wieder mit dem Malen beginnt, nachdem der aktive Satz von Zeichenaufrufen übermittelt wurde.
Siehe auch addImage().
void QCanvasPainter::removePathGroup(int pathGroup)
Entfernt pathGroup aus dem Maler-Cache. Wenn Sie danach fill() oder stroke() für pathGroup aufrufen, wird der Pfad wieder in den Gruppen-Cache aufgenommen.
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 viel weniger Befehle hat als in der Vergangenheit und die Puffergröße reduziert werden soll.
Siehe auch fill() und stroke().
QCanvasPainter::RenderHints QCanvasPainter::renderHints() const
Gibt ein Flag zurück, das die Rendering-Hinweise angibt, die für diesen Painter gesetzt sind.
Siehe auch setRenderHints() und setRenderHint().
void QCanvasPainter::reset()
Setzt den aktuellen Malerstatus auf die Standardwerte zurück.
Hinweis: Diese Methode unterscheidet sich von der HTML-Canvas-2D-Context-Reset()-Methode dadurch, dass sie die Canvas-Puffer nicht visuell löscht.
![]() | // Adjust the paint state p->setStrokeStyle("#00414A"); p->setFillStyle("#2CDE85"); p->setLineWidth(10); QRectF rect(20, 40, 160, 50); p->translate(rect.center()); p->rotate(qDegreesToRadians(-25)); p->translate(-rect.center()); p->beginPath(); p->roundRect(rect, 20); p->fill(); p->stroke(); // Reset to default paint state p->reset(); p->fillRect(20, 140, 60, 40); p->strokeRect(120, 140, 60, 40); |
Siehe auch save() und restore().
void QCanvasPainter::resetClipping()
Setzt das Clipping zurück und deaktiviert es.
Siehe auch setClipRect().
void QCanvasPainter::resetTransform()
Setzt die aktuelle Transformation auf eine Identitätsmatrix zurück.
void QCanvasPainter::restore()
Löscht und stellt den aktuellen Renderstatus wieder her. Der zuvor gespeicherte Zustand wird also wiederhergestellt. Wenn save() nicht aufgerufen wurde und der Zustandsstapel leer ist, bewirkt der Aufruf dieser Funktion nichts.
Siehe auch save().
void QCanvasPainter::rotate(float angle)
Dreht das aktuelle Koordinatensystem im Uhrzeigersinn um angle.
Der Winkel wird in Bogenmaß angegeben. Verwenden Sie qDegreesToRadians(), um von Grad in Bogenmaß umzurechnen.
![]() | QRectF rect(20, 70, 160, 60); p->translate(rect.center()); p->rotate(-M_PI / 4); p->translate(-rect.center()); p->beginPath(); p->roundRect(rect, 10); p->fill(); p->stroke(); p->setFillStyle(QColorConstants::Black); p->fillText("Cute!", rect); |
void QCanvasPainter::roundRect(float x, float y, float width, float height, float radius)
Erzeugt einen neuen abgerundeten rechteckigen Unterpfad an der Position x, y mit der Größe width, height. Die Abrundung der Ecken wird radius sein.
![]() | p->beginPath(); p->roundRect(20, 20, 160, 160, 30); p->fill(); p->stroke(); |
void QCanvasPainter::roundRect(const QRectF &rect, float radius)
Erzeugt einen neuen abgerundeten, rechteckigen Unterpfad auf rect mit radius Ecken. Dies ist eine überladene Methode mit QRectF.
Dies ist eine überladene Funktion.
void QCanvasPainter::roundRect(const QRectF &rect, float radiusTopLeft, float radiusTopRight, float radiusBottomRight, float radiusBottomLeft)
Erzeugt einen neuen abgerundeten rechteckigen Unterpfad bei rect. Die Abrundung der Ecken kann pro Ecke variiert werden, mit radiusTopLeft, radiusTopRight, radiusBottomRight, radiusBottomLeft.
Dies ist eine überladene Funktion.
void QCanvasPainter::roundRect(float x, float y, float width, float height, float radiusTopLeft, float radiusTopRight, float radiusBottomRight, float radiusBottomLeft)
Erzeugt einen neuen abgerundeten rechteckigen Unterpfad an der Position x, y mit der Größe width, height. Die Abrundung der Ecken kann pro Ecke variiert werden, mit radiusTopLeft, radiusTopRight, radiusBottomRight, radiusBottomLeft.
![]() | p->beginPath(); p->roundRect(20, 20, 160, 160, 0, 40, 20, 80); p->fill(); p->stroke(); |
Dies ist eine überladene Funktion.
void QCanvasPainter::save()
Verschiebt und speichert den aktuellen Renderzustand in einen Zustandsstapel. Um den Zustand wiederherzustellen, muss eine passende restore() verwendet werden.
![]() | p->strokeRect(20, 20, 160, 40); // Save and adjust the paint state p->save(); p->setStrokeStyle(QColorConstants::Black); p->setLineWidth(3); p->rotate(0.1); p->strokeRect(20, 80, 180, 20); // Restore the saved paint state p->restore(); p->strokeRect(20, 140, 160, 40); |
Siehe auch restore().
void QCanvasPainter::scale(float scale)
Skaliert das aktuelle Koordinatensystem um scale. Sowohl die x- als auch die y-Koordinaten werden gleichmäßig skaliert.
![]() | QRectF rect(20, 20, 160, 160); for (int i = 0; i < 20; i++) { p->beginPath(); p->roundRect(rect, 10); p->stroke(); p->translate(rect.center()); p->scale(0.8); p->translate(-rect.center()); } |
void QCanvasPainter::scale(float scaleX, float scaleY)
Skaliert das aktuelle Koordinatensystem mit scaleX und scaleY.
Dies ist eine überladene Funktion.
void QCanvasPainter::setAntialias(float antialias)
Setzen Sie den aktuellen Antialiasing-Wert auf antialias in Pixel. Mehr Antialias bedeutet glatteres Malen. Dies wirkt sich nur auf Füll- und Strichzeichnungen aus, nicht auf Bilder oder Texte. Der Standardwert ist 1.0 und der Höchstwert ist 10.0.
Das Antialiasing kann pfadweise geändert werden, so dass es vor jedem Strich/Füllung eingestellt werden kann. Um Antialiasing für den gesamten Canvas-Painter zu deaktivieren, verwenden Sie QCanvasPainter::RenderHint::Antialiasing render hint.
![]() | p->setLineWidth(6); for (int i = 1; i < 10 ; i++) { int y = i * 20; p->setAntialias(i); p->beginPath(); p->moveTo(20, y); p->bezierCurveTo(80, y + 20, 120, y - 20, 180, y); p->stroke(); } |
Siehe auch setRenderHints() und setTextAntialias().
void QCanvasPainter::setBrushTransform(const QTransform &transform)
Setzt die aktuelle Pinseltransformation auf transform. Diese Transformation wird sowohl auf Strich- als auch auf Füllpinsel angewendet.
void QCanvasPainter::setClipRect(float x, float y, float width, float height)
Setzt das aktuelle Scherenrechteck auf (x, y, width, height). Das Scherenrechteck wird mit der aktuellen Transformation transformiert.
Hinweis: Das Beschneiden ist mit Leistungseinbußen verbunden und sollte nur bei Bedarf verwendet werden.
![]() | QRectF viewArea(20, 20, 160, 160); p->setClipRect(viewArea); p->beginPath(); p->circle(40, 40, 110); p->fill(); p->setFillStyle(Qt::black); p->fillText("Clip me...", 40, 100); p->strokeRect(viewArea); |
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 Beschneiden ist mit Leistungseinbußen verbunden und sollte nur bei Bedarf verwendet werden.
Dies ist eine überladene Funktion.
Siehe auch resetClipping().
void QCanvasPainter::setFillStyle(const QColor &color)
Setzt den Füllstil auf ein einfarbiges color. Der Standardfüllstil ist einfarbig schwarz (0, 0, 0, 1).
![]() | p->setFillStyle(QColorConstants::Black); p->fillRect(20, 20, 160, 160); p->setFillStyle(QColor(0, 65, 74)); p->fillRect(40, 40, 120, 120); p->setFillStyle("#2CDE85"); p->fillRect(60, 60, 80, 80); |
void QCanvasPainter::setFillStyle(const QCanvasBrush &brush)
Setzt den Füllstil auf brush. Der Standardfüllstil ist einfarbig schwarz (0, 0, 0, 1).
![]() | QCanvasRadialGradient g2(140, 40, 300); g2.setStartColor(QColor(44, 222, 133)); g2.setEndColor(QColor(0, 65, 74)); p->setFillStyle(g2); p->fillRect(20, 20, 160, 160); g2.setCenterPosition(100, 100); p->setFillStyle(g2); p->fillRect(40, 40, 120, 120); |
Dies ist eine überladene Funktion.
void QCanvasPainter::setFont(const QFont &font)
Legt die font als derzeit aktive Schriftart fest.
void QCanvasPainter::setGlobalAlpha(float 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. Alpha sollte zwischen 0.0 (vollständig transparent) und 1.0 (vollständig undurchsichtig) liegen. Standardmäßig ist Alpha auf 1.0 eingestellt.
![]() | static QImage logo(":/qt_logo2.png"); QCanvasImage image = p->addImage(logo); p->setFillStyle("#d9f720"); for (int i = 0; i < 4; i++) { float x = 100 * (i % 2); float y = 100 * (i / 2); QRectF rect(x, y, 100, 100); p->setGlobalAlpha(1.0 - i * 0.3); p->fillRect(rect); p->drawImage(image, rect); } |
void QCanvasPainter::setGlobalBrightness(float value)
Setzt die globale Helligkeit auf value. Diese Helligkeit wird auf alle gerenderten Formen angewendet. Ein Wert von 0 bewirkt, dass das Bild komplett schwarz ist. Der Wert kann auch größer als 1.0 sein, um die Helligkeit zu erhöhen. Standardmäßig ist die Helligkeit 1.0.
![]() | static QImage logo(":/qt_logo2.png"); QCanvasImage image = p->addImage(logo); p->setFillStyle("#d9f720"); for (int i = 0; i < 4; i++) { float x = 100 * (i % 2); float y = 100 * (i / 2); QRectF rect(x, y, 100, 100); p->setGlobalBrightness(1.5 - i * 0.45); p->fillRect(rect); p->drawImage(image, rect); } |
void QCanvasPainter::setGlobalCompositeOperation(QCanvasPainter::CompositeOperation operation)
Setzt den globalen Composite-Modus auf operation. Dieser Modus wird auf alle Malvorgänge angewendet. Der Standardmodus ist QCanvasPainter::CompositeOperation::SourceOver.
void QCanvasPainter::setGlobalContrast(float value)
Setzt den globalen Kontrast auf value. Dieser Kontrast wird auf alle gerenderten Formen angewendet. Ein Wert von 0 bewirkt, dass das Bild vollständig grau ist (0,5, 0,5, 0,5). Der Wert kann auch größer als 1.0 sein, um den Kontrast zu erhöhen. Der Standardwert für den Kontrast ist 1.0.
![]() | static QImage logo(":/qt_logo2.png"); QCanvasImage image = p->addImage(logo); p->setFillStyle("#d9f720"); for (int i = 0; i < 4; i++) { float x = 100 * (i % 2); float y = 100 * (i / 2); QRectF rect(x, y, 100, 100); p->setGlobalContrast(1.5 - i * 0.45); p->fillRect(rect); p->drawImage(image, rect); } |
void QCanvasPainter::setGlobalSaturate(float value)
Setzt die globale Sättigung auf value. Diese Sättigung wird auf alle gerenderten Formen angewendet. Ein Wert von 0 deaktiviert die Sättigung und bewirkt, dass das Bild vollständig in Graustufen dargestellt wird. Der Wert kann auch größer als 1.0 sein, um die Sättigung zu erhöhen. Die Standardeinstellung für die Sättigung ist 1.0.
![]() | static QImage logo(":/qt_logo2.png"); QCanvasImage image = p->addImage(logo); p->setFillStyle("#d9f720"); for (int i = 0; i < 4; i++) { float x = 100 * (i % 2); float y = 100 * (i / 2); QRectF rect(x, y, 100, 100); p->setGlobalSaturate(1.5 - i * 0.5); p->fillRect(rect); p->drawImage(image, rect); } |
void QCanvasPainter::setLineCap(QCanvasPainter::LineCap cap)
Setzt das Zeilenende von stoke auf cap. Die Standardzeilenkappe ist QCanvasPainter::LineCap::Butt.
![]() | QCanvasPath path; path.moveTo(40, 60); path.lineTo(160, 60); p->setLineCap(QCanvasPainter::LineCap::Butt); p->stroke(path, -1); p->setLineCap(QCanvasPainter::LineCap::Square); p->translate(0, 40); p->stroke(path, -1); p->setLineCap(QCanvasPainter::LineCap::Round); p->translate(0, 40); p->stroke(path, -1); |
void QCanvasPainter::setLineJoin(QCanvasPainter::LineJoin join)
Setzt die Linienverbindung von stroke auf join. Die Standardlinienverbindung ist QCanvasPainter::LineJoin::Miter.
![]() | QCanvasPath path; path.moveTo(40, 20); path.lineTo(100, 80); path.lineTo(160, 40); path.lineTo(160, 70); p->setLineJoin(QCanvasPainter::LineJoin::Miter); p->stroke(path, -1); p->setLineJoin(QCanvasPainter::LineJoin::Bevel); p->translate(0, 50); p->stroke(path, -1); p->setLineJoin(QCanvasPainter::LineJoin::Round); p->translate(0, 50); p->stroke(path, -1); |
Siehe auch setMiterLimit().
void QCanvasPainter::setLineWidth(float width)
Legt die Linienbreite der Kontur auf width in Pixeln fest. Die Standard-Linienbreite ist 1.0. Wenn das Antialiasing aktiviert ist, wird bei Linienbreiten unter einem Pixel automatisch die Deckkraft abgeblendet, wodurch eine glatte Ausgabe entsteht.
![]() | for (int i = 1; i < 10 ; i++) { int y = i * 20; p->setLineWidth(0.5 * i); p->beginPath(); p->moveTo(20, y); p->bezierCurveTo(80, y + 20, 120, y - 20, 180, y); p->stroke(); } |
Siehe auch stroke().
void QCanvasPainter::setMiterLimit(float limit)
Setzt die Gehrungsgrenze auf limit. Die Gehrungsgrenze bestimmt, wann eine scharfe Ecke abgeschrägt wird. Wenn die Eckenlänge diesen Grenzwert überschreiten würde, wird stattdessen QCanvasPainter::LineJoin::Bevel zwischen den Linien angewendet. Dies hat nur Auswirkungen auf die Linienverbindung QCanvasPainter::LineJoin::Miter. Der Standardgrenzwert ist 10.0.
Siehe auch setLineJoin().
void QCanvasPainter::setPathWinding(QCanvasPainter::PathWinding winding)
Setzt den aktuellen Unterpfad winding entweder auf CounterClockWise (Standard) oder ClockWise. CounterClockWise zeichnet solide Unterpfade, während ClockWise Löcher zeichnet.
![]() | p->beginPath(); p->roundRect(20, 20, 160, 160, 40); p->setPathWinding(QCanvasPainter::PathWinding::ClockWise); p->circle(140, 60, 20); p->rect(60, 120, 80, 30); p->fill(); p->stroke(); |
Siehe auch beginHoleSubPath() und beginSolidSubPath().
void QCanvasPainter::setRenderHint(QCanvasPainter::RenderHint hint, bool on = true)
Setzt den angegebenen Render hint auf den Painter, wenn on wahr ist; andernfalls wird der Render-Hinweis gelöscht.
Siehe auch setRenderHints() und renderHints().
void QCanvasPainter::setRenderHints(QCanvasPainter::RenderHints hints, bool on = true)
Setzt den angegebenen Render hints auf den Painter, wenn on wahr ist; andernfalls werden die Render-Hinweise gelöscht.
Siehe auch setRenderHint() und renderHints().
void QCanvasPainter::setStrokeStyle(const QColor &color)
Setzt den Konturenstil auf einen einfarbigen color. Der Standardkonturenstil ist einfarbig schwarz (0, 0, 0, 1).
![]() | p->setStrokeStyle(QColorConstants::Black); p->strokeRect(20, 20, 160, 160); p->setStrokeStyle(QColor(0, 65, 74)); p->strokeRect(40, 40, 120, 120); p->setStrokeStyle("#2CDE85"); p->strokeRect(60, 60, 80, 80); |
void QCanvasPainter::setStrokeStyle(const QCanvasBrush &brush)
Setzt den Strichstil auf brush. Der Standardstrichstil ist einfarbig schwarz (0, 0, 0, 1).
![]() | QCanvasLinearGradient g1(180, 20, 20, 180); g1.setStartColor(QColor(44, 222, 133)); g1.setEndColor(Qt::black); p->setStrokeStyle(g1); p->strokeRect(20, 20, 160, 160); g1.setEndColor(Qt::yellow); p->setStrokeStyle(g1); p->strokeRect(40, 40, 120, 120); |
Dies ist eine überladene Funktion.
void QCanvasPainter::setTextAlign(QCanvasPainter::TextAlign align)
Setzt die horizontale Ausrichtung von Text auf align. Die Standardausrichtung ist QCanvasPainter::TextAlign::Start.
![]() | QFont font("Titillium Web", 22); p->setFont(font); p->fillRect(100, 0, 1, 200); p->setTextAlign(QCanvasPainter::TextAlign::Left); p->fillText("Left", 100, 40); p->setTextAlign(QCanvasPainter::TextAlign::Center); p->fillText("Center", 100, 70); p->setTextAlign(QCanvasPainter::TextAlign::Right); p->fillText("Right", 100, 100); p->setTextAlign(QCanvasPainter::TextAlign::Start); p->fillText("Start", 100, 130); p->setTextAlign(QCanvasPainter::TextAlign::End); p->fillText("End", 100, 160); |
Siehe auch setTextBaseline().
void QCanvasPainter::setTextAntialias(float antialias)
Legt den aktuellen Antialiasing-Wert für Text fest. Der Wert antialias ist ein Multiplikator für das normale Antialiasing, d. h. 0.0 deaktiviert das Antialiasing und 2.0 verdoppelt es. Der Standardwert ist 1.0.
Hinweis: Aufgrund der verwendeten Text-Antialiasing-Technik (SDF) ist der maximale Antialiasing-Betrag recht begrenzt und wirkt sich weniger aus, wenn die Schriftgröße klein ist.
![]() | QFont font("Titillium Web", 20); p->setFont(font); p->setTextAntialias(1.0); p->fillText("Antialiasing: 1.0", 100, 25); p->setTextAntialias(2.0); p->fillText("Antialiasing: 2.0", 100, 75); p->setTextAntialias(3.0); p->fillText("Antialiasing: 3.0", 100, 125); p->setTextAntialias(4.0); p->fillText("Antialiasing: 4.0", 100, 175); |
void QCanvasPainter::setTextBaseline(QCanvasPainter::TextBaseline baseline)
Setzt die vertikale Ausrichtung (Grundlinie) von Text auf baseline. Die Standardausrichtung ist QCanvasPainter::TextBaseline::Alphabetic.
![]() | QFont font("Titillium Web", 16); p->setFont(font); p->fillRect(0, 60, 200, 1); p->fillRect(0, 140, 200, 1); p->setTextBaseline(QCanvasPainter::TextBaseline::Bottom); p->fillText("Bottom", 40, 60); p->setTextBaseline(QCanvasPainter::TextBaseline::Middle); p->fillText("Middle", 100, 60); p->setTextBaseline(QCanvasPainter::TextBaseline::Top); p->fillText("Top", 160, 60); p->setTextBaseline(QCanvasPainter::TextBaseline::Alphabetic); p->fillText("Alphabetic", 50, 140); p->setTextBaseline(QCanvasPainter::TextBaseline::Hanging); p->fillText("Hanging", 150, 140); |
Siehe auch setTextAlign().
void QCanvasPainter::setTextDirection(QCanvasPainter::TextDirection direction)
Legt die Richtung des Textes auf direction fest. Die Standardrichtung ist QCanvasPainter::TextDirection::Inherit.
void QCanvasPainter::setTextLineHeight(float height)
Legt die Anpassung der Zeilenhöhe in Pixeln für umgebrochenen Text auf height fest. Die Standardzeilenhöhe ist 0.
![]() | QRectF r1(40, 5, 120, 60); QRectF r2(40, 70, 120, 60); QRectF r3(40, 135, 120, 60); p->strokeRect(r1); p->strokeRect(r2); p->strokeRect(r3); p->setTextLineHeight(-10); p->fillText("Text with line height: -10", r1); p->setTextLineHeight(0); p->fillText("Text with line height: 0", r2); p->setTextLineHeight(10); p->fillText("Text with line height: 10", r3); |
void QCanvasPainter::setTextWrapMode(QCanvasPainter::WrapMode wrapMode)
Setzt den Textumbruchmodus auf wrapMode. Der Standardumbruchmodus ist QCanvasPainter::WrapMode::NoWrap.
![]() | QRectF r1(50, 5, 100, 60); QRectF r2(50, 70, 100, 60); QRectF r3(50, 135, 100, 60); p->strokeRect(r1); p->strokeRect(r2); p->strokeRect(r3); QString s("This is a long string."); p->setTextWrapMode(QCanvasPainter::WrapMode::NoWrap); p->fillText(s, r1); p->setTextWrapMode(QCanvasPainter::WrapMode::Wrap); p->fillText(s, r2); p->setTextWrapMode(QCanvasPainter::WrapMode::WrapAnywhere); p->fillText(s, r3); |
void QCanvasPainter::setTransform(const QTransform &transform)
Setzt die aktuelle Transformation zurück und verwendet stattdessen transform.
![]() | p->beginPath(); p->roundRect(80, 20, 40, 40, 10); p->fill(); p->stroke(); QTransform t; t.translate(100, 20); t.rotate(45); t.scale(2.0, 2.0); p->setTransform(t); p->beginPath(); p->roundRect(20, 20, 40, 40, 10); p->fill(); p->stroke(); |
Siehe auch transform().
void QCanvasPainter::skew(float angleX, float angleY = 0.0f)
Verzerrt (schert) das aktuelle Koordinatensystem entlang der X-Achse um angleX und entlang der Y-Achse um angleY. Die Winkel werden in Radiant angegeben.
![]() | QRectF rect(40, 70, 120, 60); p->translate(rect.center()); p->skew(-0.6); p->translate(-rect.center()); p->beginPath(); p->roundRect(rect, 10); p->fill(); p->stroke(); p->setFillStyle(QColorConstants::Black); p->fillText("Cute!", rect); |
void QCanvasPainter::stroke()
Zeichnet den aktuellen Pfad mit dem aktuellen Zeichenstil.
![]() | p->beginPath(); p->rect(20, 20, 40, 160); p->rect(140, 20, 40, 160); p->circle(100, 100, 60); p->stroke(); |
Siehe auch setStrokeStyle().
void QCanvasPainter::stroke(const QCanvasPath &path, int pathGroup = 0)
Zeichnet die path mit dem aktuellen Zeichenstil und gehört in pathGroup. Das Malen durch QCanvasPath ist optimal, wenn der Pfad mehr Befehle enthält und überwiegend statisch ist. Standardmäßig ist pathGroup gleich 0, so dass die erste Gruppe verwendet wird. Wenn pathGroup -1 ist, wird der Pfad nicht auf der GPU-Seite zwischengespeichert. Weitere Informationen zur Verwendung von Pfad-Cache-Gruppen finden Sie in der Dokumentation QCanvasPath. Der Aufruf von beginPath() vor dieser Methode ist nicht erforderlich.
![]() | // m_path is QCanvasPath if (m_path.isEmpty()) { for (int i = 0; i < 16; i++) { int h = 100 + 60 * sin(i); m_path.rect(22 + i * 10, 180 - h, 6, h); } } p->stroke(m_path); |
Dies ist eine überladene Funktion.
Siehe auch setStrokeStyle().
void QCanvasPainter::strokeRect(float x, float y, float width, float height)
Zeichnet ein gestochenes Rechteck an der angegebenen Position ( x, y) in der Größe width, height.
Hinweis: Dies dient der Bequemlichkeit. Wenn Sie mehr als nur ein einzelnes Rechteck zeichnen wollen, verwenden Sie lieber rect().
![]() | p->strokeRect(20, 20, 160, 160); // The above code does same as: // p->beginPath(); // p->rect(20, 20, 160, 160); // p->stroke(); |
void QCanvasPainter::strokeRect(const QRectF &rect)
Zeichnet ein gestochenes Rechteck in rect. Dies ist eine überladene Methode, die QRectF verwendet.
Hinweis: Diese Methode dient der Bequemlichkeit. Wenn Sie mehr als nur ein einzelnes Rechteck zeichnen wollen, verwenden Sie lieber rect().
Dies ist eine überladene Funktion.
QRectF QCanvasPainter::textBoundingBox(const QString &text, float x, float y, float maxWidth = -1)
Misst den Begrenzungsrahmen einer Zeichenkette text bei (x, y). Um mehrzeiligen Text zu messen, setzen Sie den optionalen Parameter maxWidth auf die bevorzugte Zeilenbreite in Pixel. Gibt QRectF mit den Werten [xmin, ymin, Breite, Höhe] zurück. Die gemessenen Werte werden im lokalen Koordinatenraum zurückgegeben.
![]() | QString s("Built with Qt"); QPointF pos1(20, 20); QRectF box1 = p->textBoundingBox(s, pos1); p->strokeRect(box1); p->fillText(s, pos1); p->setTextWrapMode(QCanvasPainter::WrapMode::WordWrap); p->setTextAlign(QCanvasPainter::TextAlign::Center); QPointF pos2(100, 80); QRectF box2 = p->textBoundingBox(s, pos2, 100); p->strokeRect(box2); p->fillText(s, pos2, 100); |
QRectF QCanvasPainter::textBoundingBox(const QString &text, const QRectF &rect)
Misst die Bounding Box eines text Strings auf rect. Gibt QRectF mit den Werten [xmin, ymin, Breite, Höhe] zurück. Die gemessenen Werte werden im lokalen Koordinatenraum zurückgegeben.
Dies ist eine überladene Funktion.
QRectF QCanvasPainter::textBoundingBox(const QString &text, QPointF point, float maxWidth = -1)
Misst den Begrenzungsrahmen einer Zeichenkette text unter point. Um mehrzeiligen Text zu messen, setzen Sie den optionalen Parameter maxWidth auf die bevorzugte Zeilenbreite in Pixeln. Gibt QRectF mit den Werten [xmin, ymin, Breite, Höhe] zurück. Die gemessenen Werte werden im lokalen Koordinatenraum zurückgegeben.
Dies ist eine überladene Funktion.
void QCanvasPainter::transform(const QTransform &transform)
Multipliziert das aktuelle Koordinatensystem mit dem angegebenen transform.
![]() | QTransform t; t.translate(100, 100); t.rotate(36); t.translate(-100, -100); for (int i = 0; i < 10; i++) { p->transform(t); p->beginPath(); p->roundRect(80, 15, 40, 20, 10); p->fill(); p->stroke(); } |
Siehe auch setTransform().
void QCanvasPainter::translate(float x, float y)
Verschiebt das aktuelle Koordinatensystem um x und y.
![]() | auto paintRect = [p]() { p->beginPath(); p->roundRect(20, 20, 160, 60, 10); p->fill(); p->stroke(); }; paintRect(); p->translate(0, 100); paintRect(); |
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.
























































