QCanvasPainter Class
QCanvasPainter クラスは、QRhi に対してハードウェア・アクセラレーションによるペイントを行います。詳細...
| ヘッダー | #include <QCanvasPainter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter) |
| 以来: | Qt 6.11 |
| ステータス | テクニカルプレビュー |
パブリックな型
| 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 } |
パブリック関数
| 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) |
静的パブリックメンバ
詳細説明
Qt Canvas Painter(QCanvasPainter)は、ハードウェアアクセラレーション(GPU)による描画に最適化された描画 API を提供します。この API は、HTML Canvas 2D Context 仕様に忠実に準拠しており、Qt C++ に移植されています。また、QPainter にも影響を受けていますが、よりコンパクトな API になっています。
以下は、QCanvasPainter を使用して丸いボタンを作成する簡単な例です。
![]() | 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); |
シンプルなグラフを描くもう一つの例です。
![]() | // 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(); |
機能
ほとんどの部分と命名の観点から、QCanvasPainter は HTML Canvas 2D コンテキスト (https://html.spec.whatwg.org/multipage/canvas.html#2dcontext) を忠実に踏襲しています。これにより、多くの開発者にとって使い慣れた API になり、既存の canvas コードを簡単に再利用できるようになります。しかし、HTML canvas と 100% 互換であることは目指していません。QCanvasPainter は、よりシンプルで、QRhi ハードウェア アクセラレーション グラフィックス API 上でより高いパフォーマンスを発揮し、現代の UI ニーズをより的確に満たすために、いくつかの機能を省略しています。これらの理由により、QCanvasPainter には、HTML Canvas 2D Context に比べて追加機能もあります。
これらは、HTML canvas と比較して少なくとも現在不足している機能の一部です:
- クリッピング:クリッピングはすべて(変形された)矩形であり、パス形状へのクリッピングはサポートされていません。
- 塗りつぶしモード:デフォルトの Non-zero fillrule のみがサポートされており、Even-odd fillrule はサポートされていません。
- ダッシュ:破線/点線のストロークパターンはサポートされていません。
- パスのテスト:isPointInPath() メソッドや isPointInStroke() メソッドはありません。
- テキストのストローク:テキストのアウトライン・ストロークには対応していません。
- フィルタ:Canvas SVG フィルタ効果はサポートされていません。
- CompositeModes:余分なバッファにレンダリングすることなくサポートできるコンポジットモードは 3 つまでです。
- シャドウ:組み込みのシャドウ・メソッドはサポートされていません。
一方、QCanvasPainter が HTML canvas と比較して提供する追加機能には次のようなものがあります:
- パスグループ:QCanvasPainter では、静的なパスにペイントし、これらのパスをグループとしてキャッシュして GPU を最適に使用できます。
- 調整可能なアンチエイリアス:パスの頂点アンチエイリアシングと SDF テキスト レンダリングにより、アンチエイリアシングのピクセル量を自由に調整して、より滑らかなペイントを実現できます。
- ボックスグラデーション:線形、放射状、円錐状のグラデーションに加えて、QCanvasPainter は丸みを帯びた四角形のボックスグラデーションもサポートしています。
- ボックスシャドウ:QCanvasPainter は、CSS ボックス シャドウ ブラシもサポートしています。レンダリングには、Qt Quick RectangularShadow と同様の SDF アプローチが使用されており、非常にパフォーマンスが高くなっています。
- グリッド パターン:QCanvasPainter は、動的なグリッド パターンとバー パターンのスタイルQCanvasGridPattern をサポートしています。
- カスタムブラシ:QCanvasPainter では、カスタム頂点シェーダおよびフラグメント シェーダを使用した塗りつぶしやストロークも可能です (QCanvasCustomBrush)。これらのカスタムブラシはテキストにも使用できます。
- テキストの折り返し:QCanvasPainter では、テキストを複数行に自動的に折り返すことができます。
- カラー効果:QCanvasPainter では、globalAlpha に加えて、グローバルな明るさ、コントラスト、彩度もサポートしています。
- 色合い画像:QCanvasPainter は、ペイント画像と画像パターンの色合いをサポートします。
QCanvasPainter はアーキテクチャに依存せず、Qt Quick とQt Widgets の両方のアプリケーションで使用できます。実際には、QWindow とQRhi だけで、そのどちらでもなくても使用可能です。QCanvasPainterを使用するには、アプリケーションのアーキテクチャに応じて、これらのクラスのいずれかを使用してください:
- Qt Quick:QCanvasPainterItem 、QCanvasPainterItemRenderer 。
- Qt Widgets:QCanvasPainterWidget 。
- QRhi QWindow 、またはオフスクリーン バッファを使用: および を使用する。QRhi QCanvasPainterFactory QCanvasRhiPaintDriver
塗りつぶしルール
QCanvasPainter はnonzero (WindingFill) の塗りルールを使用します。パス ポイントの方向に基づいて塗りつぶしを選択するには、setRenderHint() を使用してDisableWindingEnforce レンダリング ヒントを設定し、強制的な巻き込みを無効にします。
![]() | 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(); |
しかし、より一般的なケースでは、setPathWinding() またはbeginHoleSubPath() とbeginSolidSubPath() ヘルパーを使用して、優先する塗りつぶしを設定します。
![]() | 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(); |
メンバ型ドキュメント
enum class QCanvasPainter::CompositeOperation
Qt Canvas Painter は 3 つの合成操作をサポートしています:
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::CompositeOperation::SourceOver | 0 | デフォルト値。既存のコンテンツの上に新しい図形を描画します。 |
QCanvasPainter::CompositeOperation::SourceAtop | 1 | 新しい図形は、既存のコンテンツと重なる部分にのみ描画されます。 |
QCanvasPainter::CompositeOperation::DestinationOut | 2 | 既存のコンテンツは、新しい図形と重ならないように保持されます。 |
setGlobalCompositeOperation()も参照してください 。
enum class QCanvasPainter::ImageFlag
flags QCanvasPainter::ImageFlags
この enum は、画像に関するフラグを指定します。フラグを設定するにはaddImage() を使用します。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::ImageFlag::GenerateMipmaps | 1 << 0 | 画像にミップマップを生成する場合に設定します。ミップマップは、元のサイズよりも小さいサイズに拡大縮小された画像に対して、より滑らかな出力が望まれる場合に使用されるべきです。 |
QCanvasPainter::ImageFlag::RepeatX | 1 << 1 | X 座標で画像を繰り返すには、画像パターンと一緒に使います。 |
QCanvasPainter::ImageFlag::RepeatY | 1 << 2 | Y座標で画像を繰り返すには、画像パターンと一緒に使います。 |
QCanvasPainter::ImageFlag::Repeat | RepeatX | RepeatY | 両方の座標で画像を繰り返すには、画像パターンと併用します。 |
QCanvasPainter::ImageFlag::FlipY | 1 << 3 | レンダリング時に画像をY方向に反転させます。 |
QCanvasPainter::ImageFlag::Premultiplied | 1 << 4 | 画像データにはあらかじめアルファが乗算されています。 |
QCanvasPainter::ImageFlag::Nearest | 1 << 5 | 画像補間は Linear ではなく Nearest です。 |
QCanvasPainter::ImageFlag::NativeTexture | 1 << 6 | これはQCanvasPainter の外側のテクスチャであることを示します。 |
ImageFlags 型はQFlags<ImageFlag> の typedef です。これは、ImageFlag 値の OR の組み合わせを格納します。
enum class QCanvasPainter::LineCap
LineCapは、線の終端(キャップ)の描画方法を定義するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::LineCap::Butt | 0 | (デフォルト) 線の終点を覆わない正方形の線の終端。 |
QCanvasPainter::LineCap::Round | 1 | 丸い線の終端。 |
QCanvasPainter::LineCap::Square | 2 | 終点を覆い、そこから線幅の半分だけはみ出る正方形の線端。 |
setLineCap()も参照 。
enum class QCanvasPainter::LineJoin
LineJoinは、接続された2つの線間の結合をどのように描画するかを定義するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::LineJoin::Round | 0 | 2本の線の間の円弧は塗りつぶされます。 |
QCanvasPainter::LineJoin::Bevel | 1 | 2本の線の間の三角形の切り欠きが塗りつぶされます。 |
QCanvasPainter::LineJoin::Miter | 2 | (デフォルト) 線の外縁が斜めに交わるように延長され、この領域が塗りつぶされます。 |
setLineJoin() およびsetMiterLimit()も参照 。
enum class QCanvasPainter::PathConnection
いくつかの描画メソッドでは、新しいパスを前のパスの最後の点に接続するかどうかを指定するために PathConnection が使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::PathConnection::NotConnected | 0 | 前のパスの最後の点から現在のパスの最初の点まで線が引かれていない。 |
QCanvasPainter::PathConnection::Connected | 1 | 前のパスの最後の点は、 カ レ ン ト パスの最初の点に接続 さ れます。 |
arc()も参照 。
enum class QCanvasPainter::PathWinding
PathWinding は、パスの描画方向を指定するために使用されます。この方向は、サブパスがパスの中で実線か穴かを決定するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::PathWinding::CounterClockWise | 0 | (デフォルト) 立体形状の場合は反時計回りに巻きます。 |
QCanvasPainter::PathWinding::ClockWise | 1 | 穴の場合は時計回り。 |
setPathWinding()も参照してください 。
enum class QCanvasPainter::RenderHint
flags QCanvasPainter::RenderHints
この enum は、レンダリングに関連するQCanvasPainter へのフラグを指定します。フラグを設定するにはsetRenderHint() を使用します。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::RenderHint::Antialiasing | 1 << 0 | これを false に設定すると、アンチエイリアシングが無効になります。有効にするとレンダリングコストが高くなります。デフォルト値はtrueです。 |
QCanvasPainter::RenderHint::HighQualityStroking | 1 << 1 | これをtrueに設定すると、ストロークが重なり、完全な不透明度を持たないような、あまり一般的でないケースで、より正しいレンダリングが行われます。有効にするとレンダリングコストが高くなります。デフォルト値は false です。 |
QCanvasPainter::RenderHint::DisableWindingEnforce | 1 << 2 | これをtrueに設定すると、setPathWinding()に設定されたものと一致するようにパスを強制的に巻き取ることを無効にします。無効にすると、例えば、クロック順に点を追加してパスに穴を作ることができます。無効にすることでパフォーマンスも向上します。 |
RenderHints型はQFlags<RenderHint>のtypedefです。RenderHint値のORの組み合わせを格納します。
enum class QCanvasPainter::TextAlign
TextAlignは、テキストが水平方向にどのように整列されるかを定義するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::TextAlign::Left | 0 | テキストの左側を指定された位置に水平に揃える。 |
QCanvasPainter::TextAlign::Right | 1 | テキストの右側を指定された位置に水平に揃える。 |
QCanvasPainter::TextAlign::Center | 2 | テキストの中央を指定された位置に水平に揃える。 |
QCanvasPainter::TextAlign::Start | 3 | (デ フ ォル ト ) テキス ト は、 行の通常の開始位置で揃え ら れます (左書 き ロ ケールの場合は左揃え、 右書 き ロ ケールの場合は右揃え)。 |
QCanvasPainter::TextAlign::End | 4 | テキス ト は通常の行末位置に揃え ら れます (左書 き ロ ケールの場合は右揃え、 右書 き ロ ケールの場合は左揃え)。 |
setTextAlign()、setTextDirection()、fillText()も参照のこと 。
enum class QCanvasPainter::TextBaseline
TextBaselineは、テキストがどのように垂直方向に整列(ベースライン)されるかを定義するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::TextBaseline::Top | 0 | テキストの上端を指定された位置に垂直に揃える。 |
QCanvasPainter::TextBaseline::Hanging | 1 | テキストの垂れ下がったベースラインを指定された位置に垂直に揃える。 |
QCanvasPainter::TextBaseline::Middle | 2 | テキストの中央を、指定された位置に垂直に揃える。 |
QCanvasPainter::TextBaseline::Alphabetic | 3 | (デ フ ォ ル ト ) テキス ト のベース ラ イ ン を縦に、 指定 し た位置に揃える。 |
QCanvasPainter::TextBaseline::Bottom | 4 | テキス ト の下端を、 指定 し た位置に縦に揃える。 |
setTextBaseline() およびfillText()も参照 。
enum class QCanvasPainter::TextDirection
TextDirection は、テキストが水平方向にどのように配置されるかを定義するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::TextDirection::LeftToRight | 0 | テキストの方向は左から右です。 |
QCanvasPainter::TextDirection::RightToLeft | 1 | テキス ト の向きは右書 き です。 |
QCanvasPainter::TextDirection::Inherit | 2 | (デフォルト) テキスト方向はQGuiApplication layoutDirection から継承されます。https://doc.qt.io/qt-6/qguiapplication.html#layoutDirection-prop を参照。 |
QCanvasPainter::TextDirection::Auto | 3 | テキス ト の向きは、 テキス ト 文字列か ら 自動的に検出 さ れます。QString::isRightToLeft() を参照。 |
注意 : こ れはテ キ ス ト を分析す る 必要があ る ので、 他のオプシ ョ ン よ り も 遅 く な る可能性があ り ます。
setTextDirection(),setTextAlign(),fillText()も参照 。
enum class QCanvasPainter::WrapMode
WrapModeは、テキストを複数行に折り返す方法を定義するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::WrapMode::NoWrap | 0 | (デフォルト) 折り返しは行われません。テキストが不十分な改行を含む場合、contentWidthは設定された幅を超える。 |
QCanvasPainter::WrapMode::Wrap | 1 | 可能であれば、折り返しは単語の境界で行われ、そうでなければ、単語の途中であっても、行の適切な位置で行われます。 |
QCanvasPainter::WrapMode::WordWrap | 2 | 折り返しは単語境界でのみ行われます。単語が長すぎる場合、コンテンツの幅は設定された幅を超える。 |
QCanvasPainter::WrapMode::WrapAnywhere | 3 | 折り返しは、単語の途中であっても、行のどの位置でも行われます。 |
setTextWrapMode() およびfillText()も参照のこと 。
メンバ関数ドキュメント
QCanvasPainter::QCanvasPainter()
ペインターを構築する。
[noexcept] QCanvasPainter::~QCanvasPainter()
画家を破壊する。
qsizetype QCanvasPainter::activeImageCount() const
このQCanvasPainter に登録されているアクティブなQCanvasImage オブジェクトの数を返します。これには、gradients 用に内部で作成されたイメージも含まれます。
QCanvasImage QCanvasOffscreenCanvas インスタンスや外部で管理されているテクスチャを登録して作成されたオブジェクトは、この関数では考慮されません。
activeImageMemoryUsage()、addImage()、removeImage()も参照 。
qsizetype QCanvasPainter::activeImageMemoryUsage() const
addImage() オーバーロードがQImage を取って作成した、このペインターのすべてのアクティブなQCanvasImage インスタンスの画像(ピクセル)データによって使用されるメモリの概算値をキロバイト単位で返します。 また、gradients の内部的に作成された画像のデータも含まれます。
QCanvasPainter は、addImage() が返った後は、CPU側のQImage データのコピーを保持しません。したがって、この関数の結果は、テクスチャに使用される GPU メモリの近似値となります。
注意: この値は、画像フォーマットと寸法に基づく推定値にすぎません。Qt は、テクスチャのデータが GPU 側のメモリにどのように保存され、どのように配置されるかを知りません。
オフスクリーンのキャンバスや、他のaddImage() オーバーロードによって登録された外部管理テクスチャは、この関数では考慮されません。
有効なQCanvasImage に対しては、sizeInBytes() を呼び出すことで、常にバイト単位の個々のサイズを問い合わせることができます。この関数は、QCanvasImage がQCanvasOffscreenCanvas またはQRhiTexture から作成された場合にも有効な結果を返すが、ミップマップやマルチサンプルデータは考慮されない。
activeImageCount()、addImage()、removeImage()も参照 。
QCanvasImage QCanvasPainter::addImage(const QImage &image, QCanvasPainter::ImageFlags flags = {})
テクスチャとしてペインターが利用できるflags でimage を追加します。テクスチャ ID と画像に関するその他の情報とともにQCanvasImage を返します。返されたQCanvasImage は、drawImage とQCanvasImagePattern とともに使用できます。このメソッドを呼び出した後、image QImage をメモリに保持する必要はありません。
同じimage で呼び出すと、キャッシュヒットが期待できるため、安価な操作になります。
最適化の際には、addImage()を一度だけ呼び出すように注意しなければならない。アプリケーションの設計によっては、それで十分とは限りません。たとえば、ウィジェットを新しいトップレベルに移動したために、ペインターが新しいQRhi に関連付けられた場合など、基礎となるグラフィックリソースが失われた場合、この関数を呼び出すことは、image からネイティブグラフィックテクスチャを再作成するために不可欠です。
drawImage() およびremoveImage()も参照してください 。
QCanvasImage QCanvasPainter::addImage(QRhiTexture *texture, QCanvasPainter::ImageFlags flags = {})
ペインターがテクスチャとして利用できるflags でtexture を追加します。フラグNativeTexture は暗黙的に設定されます。返されたQCanvasImage はdrawImage とQCanvasImagePattern とともに使用できます。
注意: texture の所有権は取得されません。
これはオーバーロードされた関数です。
drawImage() およびremoveImage()も参照してください 。
QCanvasImage QCanvasPainter::addImage(const QCanvasOffscreenCanvas &canvas, QCanvasPainter::ImageFlags flags = {})
canvas をflags とともにペインターに登録し、画像として利用できるようにする。返されたQCanvasImage はdrawImage やQCanvasImagePattern と一緒に使うことができます。
canvas つまり、removeImage() はcanvas を無効にしません。
これはオーバーロードされた関数である。
drawImage() およびremoveImage()も参照 。
void QCanvasPainter::addPath(const QPainterPath &path)
path を現在のパスに追加します。
注意: QCanvasPainter は WindingFill (nonzero) fillrule を使用します。これは、すべての QPainterPath が正しくレンダリングされないことを意味します。こ れは、 た と えばパスが穴のあいたテ キ ス ト キ ャ ラ ク タ を含んでい る と き に顕著です。
注意 : こ の メ ソ ッ ド は主に、QPainter ・QPainterPath と の互換性のために利用で き ます。QCanvasPainter メ ソ ッ ド で直接パ ス を描 く こ と と と 比較 し てパフ ォーマ ン ス を向上 さ せ る も のではあ り ません。
void QCanvasPainter::addPath(const QCanvasPath &path, const QTransform &transform = QTransform())
path をカ レ ン ト パ ス に追加 し 、 オプシ ョ ンでtransform を用いてパ ス ポ イ ン ト を変更 し ます。transform が与え ら れない と き (ま たはそれが同一行列であ る と き )、 こ の操作はパスデー タ を再利用す る ので非常に高速です。
![]() | // 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())
start のコマンドから開始し、count のコマンドの量を含めて、path を現在のパスに追加する。オプションで、transform を使ってパスポイントを変更する。start とcount の範囲がチェックされ、コマンドがQCanvasPath::commandsSize() より多くアクセスされないようにする。path.positionAt(start - 1)パスが現在のパス位置から続いてはならない場合は、最初にmoveTo() を呼び出す。
![]() | // 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)
新しい円弧状のサブパスを作成する。弧の中心はcenterX,centerY,radius にあり、弧は角度a0 からa1 へ描かれ、direction (ClockWise またはCounterClockWise) で掃引される。connection がNotConnected の場合、 arc は直前のパ ス位置か ら 円弧の始点へ線を追加 し ません。角度は ラ ジ ア ン単位で指定 し ます。
![]() | p->beginPath(); p->moveTo(100, 100); p->arc(100, 100, 80, 0, 1.5 * M_PI); p->closePath(); p->fill(); p->stroke(); |
注: HTML canvas の 2D コンテキストでは、円の描画に arc() を使用しますが、QCanvasPainter では、circle() またはellipse() を使用することをお勧めします。
void QCanvasPainter::arc(QPointF centerPoint, float radius, float a0, float a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
新しい円弧状のサブパスを作成する。弧の中心はcenterPoint で、radius とし、弧は角度a0 からa1 まで描かれ、direction (ClockWise またはCounterClockWise) で掃引される。connection がNotConnected の場合、 arc は直前のパ ス位置か ら弧の始点へ線を追加 し ません。角度は ラ ジ ア ン単位で指定 し ます。
注意: HTML canvas の 2D コンテキストでは、円を描くために arc() を使用しますが、QCanvasPainter では、circle() またはellipse() を使用することをお勧めします。
これはオーバーロードされた関数です。
void QCanvasPainter::arcTo(float x1, float y1, float x2, float y2, float radius)
最後のパ ス点 と 、 指定 し た 2 点 (x1,y1 とx2,y2 ) とradius で定義 さ れた隅に弧分点を追加 し ます。こ の円弧は、 必要に応 じ て自動的に、 パ ス の最新点に直線で接続 さ れます。
![]() | 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)
最後のパ ス点 と 、 指定 し た 2 点 (controlPoint1 とcontrolPoint2 ) とradius で定義 さ れた隅に弧分点を追加 し ます。こ の円弧は、 必要に応 じ て自動的に、 パスの最新点に直線で接続 さ れます。
こ れはオーバー ロー ド さ れた関数です。
void QCanvasPainter::beginHoleSubPath()
ホールサブパスを開始する。これは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(); |
beginSolidSubPath()も参照のこと 。
void QCanvasPainter::beginPath()
現在のパスをクリアしながら、新しいパスの描画を開始する。
void QCanvasPainter::beginSolidSubPath()
ソリッドサブパスを開始する。これはsetPathWinding(QCanvasPainter::PathWinding::CounterClockWise) と同じである。)
beginHoleSubPath()も参照 。
void QCanvasPainter::bezierCurveTo(float cp1X, float cp1Y, float cp2X, float cp2Y, float x, float y)
パス内の最後の点から、2 つの制御点 (cp1X,cp1Y とcp2X,cp2Y) を経由して、指定点 (x,y) までの三次ベジエセグメントを追加します。
![]() | 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)
パスの最後の点から、2 つの制御点 (controlPoint1 とcontrolPoint2) を経由して、指定された点endPoint まで、3 次ベジェセグメントを追加します。
これはオーバーロードされた関数です。
void QCanvasPainter::circle(float centerX, float centerY, float radius)
radius を持つ (centerX,centerY) に新しい円形のサブパスを作成する。
![]() | p->beginPath(); p->circle(100, 100, 80); p->fill(); p->stroke(); |
void QCanvasPainter::circle(QPointF centerPoint, float radius)
新しい円形のサブパスをradius でcenterPoint に作成する。
これはオーバーロードされた関数である。
void QCanvasPainter::cleanupResources()
未使用のテクスチャをキャッシュから削除するようにスケジュールします。
さらに、メモリ使用量を最小限に抑えるために、この関数を呼び出すと他のキャッシュやプールが縮小されることがあります。これにより、その後の描画呼び出しがより高価になる可能性があります。
void QCanvasPainter::clearRect(float x, float y, float width, float height)
x,y,width,height で指定された矩形を透明な黒で塗りつぶすことによって、矩形領域のピクセルを消去する。消去にはブレンドが不要なので、fillRect() よりも高速に処理できる。
![]() | p->beginPath(); p->circle(100, 100, 80); p->fill(); p->stroke(); p->clearRect(60, 0, 80, 120); |
void QCanvasPainter::clearRect(const QRectF &rect)
rect で指定した矩形を透明な黒で塗りつぶすことで、矩形領域のピクセルを消去します。これはQRectF を使ったオーバーロードされたメソッドです。
これはオーバーロードされた関数です。
void QCanvasPainter::closePath()
現在のサブパスを線分で閉じる。これはlineTo([始点]) を最後のパス要素とすることと同じです。
QCanvasOffscreenCanvas QCanvasPainter::createCanvas(QSize pixelSize, int sampleCount = 1, QCanvasOffscreenCanvas::Flags flags = {})
与えられたpixelSize 、sampleCount 、flags を持つ新しいオフスクリーンキャンバスを返します。
キャンバスのサイズはピクセル単位で指定します。pixelSize,sampleCount,flags の各プロパティは、その後も不変です。異なるサイズ、サンプル数、フラグを持つキャンバスを取得するには、新しいキャンバスを作成します。
描画コマンドを使用してオフスクリーン・キャンバスをターゲットにするには、低レベルの API を使用している場合は適切なQCanvasRhiPaintDriver::beginPaint() オーバーロードを、コンビニエンス・ウィジェットやQt Quick アイテム・クラスを使用している場合はQCanvasPainterWidget::beginCanvasPainting() またはQCanvasPainterItemRenderer::beginCanvasPainting() を呼び出します。
通常、キャンバスにペイントすると、キャンバスの内容はクリアされます。これを無効にするには、flags にPreserveContents を渡します。
canvas へのマルチサンプル・レンダリング(マルチサンプル・アンチエイリアシング、MSAA)を要求するには、サンプル数を 4 や 8 など、1 より大きく設定します。ただし、マルチサンプリングが有効になっている場合、レンダーパス間でキャンバスの内容を保持することはサポートされていないため、PreserveContents フラグは機能しません。
void QCanvasPainter::destroyCanvas(QCanvasOffscreenCanvas &canvas)
canvas を支えるリソースを破壊する。canvas はnull canvas になる。
ペインターは破棄時に自動的にこれを行います。したがって、この関数を呼び出す必要があるのは、関連するリソースをすぐに解放したい場合だけです。
float QCanvasPainter::devicePixelRatio() const
物理ピクセルとデバイス非依存ピクセルの比率を返す。デフォルト値は1.0 です。
void QCanvasPainter::drawBoxShadow(const QCanvasBoxShadow &shadow)
ボックスを描画するshadow 。shadowこのメソッドの前にbeginPath() を呼び出す必要はありません。
注意: drawBoxShadow() がカバーする領域を視覚的に確認するには、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(); |
QCanvasBoxShadowも参照 。
void QCanvasPainter::drawImage(const QCanvasImage &image, float x, float y)
image をx,y にデフォルトサイズで描画する。
![]() | static QImage logo(":/qt_logo.png"); QCanvasImage image = p->addImage(logo); p->drawImage(image, 36, 36); |
addImage()も参照のこと 。
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &destinationRect)
destinationRect の位置とサイズにimage を描画する。
これはオーバーロードされた関数である。
addImage()も参照のこと 。
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &sourceRect, const QRectF &destinationRect)
画像のsourceRect 領域からdestinationRect の位置とサイズにimage を描画する。
![]() | 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); |
これはオーバーロードされた関数です。
addImage()も参照 。
void QCanvasPainter::drawImage(const QCanvasImage &image, float x, float y, float width, float height)
image をx,y, 与えられたwidth とheight に描画する。
![]() | static QImage logo(":/qt_logo.png"); QCanvasImage image = p->addImage(logo); p->drawImage(image, 50, 0, 100, 200); |
これはオーバーロードされた関数である。
addImage()も参照 。
void QCanvasPainter::ellipse(float centerX, float centerY, float radiusX, float radiusY)
(centerX,centerY) に、radiusX とradiusY を持つ新しい楕円形のサブパスを作成する。
![]() | p->beginPath(); p->ellipse(100, 100, 80, 60); p->fill(); p->stroke(); |
void QCanvasPainter::ellipse(const QRectF &rect)
rect に新しい楕円形のサブパスを作成する。この楕円はrect の領域をカバーする。
![]() | QRectF rect(40, 20, 120, 160); p->fillRect(rect); p->beginPath(); p->ellipse(rect); p->stroke(); |
これはオーバーロードされた関数です。
void QCanvasPainter::ellipse(QPointF centerPoint, float radiusX, float radiusY)
新しい楕円形のサブパスをradiusX とradiusY でcenterPoint に作成する。
これはオーバーロードされた関数である。
void QCanvasPainter::fill()
現在のパスを現在の塗りつぶしスタイルで塗りつぶします。
![]() | p->beginPath(); p->rect(20, 20, 40, 160); p->rect(140, 20, 40, 160); p->circle(100, 100, 60); p->fill(); |
setFillStyle()も参照 。
void QCanvasPainter::fill(const QCanvasPath &path, int pathGroup = 0)
path を現在の塗りつぶしスタイルで塗りつぶし、pathGroup に属する。QCanvasPath を通 じ て塗る こ と は、 パ ス に よ り 多 く の コ マ ン ド が含まれてお り 、 その大部分が静的であ る と き に最適です。デフォルトでは、pathGroup は0 であるため、最初のグループを使用します。pathGroup が-1 の場合、パスは GPU 側でキャッシュされません。パス・キャッシュ・グループの使用に関する詳細は、QCanvasPath ドキュメントを参照してください。このメソッドの前にbeginPath() を呼び出す必要はありません。
![]() | // 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); |
これはオーバーロードされた関数です。
setFillStyle()も参照してください 。
void QCanvasPainter::fillRect(float x, float y, float width, float height)
指定された位置 (x,y) に、塗りつぶされた矩形をサイズwidth,height で描画します。
注意: これは便宜上提供されている。複数の矩形を塗りつぶす場合は、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)
塗りつぶされた矩形をrect に描画する。これはQRectF を使ったオーバーロードされたメソッドです。
注意: これは便宜上提供されています。1つ以上の矩形を塗りつぶす場合は、rect() を使用することをお勧めします。
これはオーバーロードされた関数です。
void QCanvasPainter::fillText(const QString &text, float x, float y, float maxWidth = -1)
text 文字列を、 現在の textAlign と textBaseline で、 指定 し た位置 (x,y) に描画 し ます。テキス ト を複数行に折り返すには、 オプ シ ョ ナルなmaxWidth パラ メ タに、 行の幅を ピ ク セル単位で指定 し ます。行の先頭では空白が除去 さ れ、 テ キ ス ト は単語境界か改行キ ャ ラ ク タ に出会 う と 分割 さ れます。最大幅より長い単語は、最も近い文字で分割されます(つまり、ハイフネーションはありません)。
void QCanvasPainter::fillText(const QString &text, const QRectF &rect)
rect 内にtext 文字列を、現在の textAlign と textBaseline で描画します。rect パラメータの幅が maxWidth として使用されます。
これはQRectF を使ったオーバーロードされたメソッドです。こ の メ ソ ッ ド でテ キ ス ト を描 く 際、 テ キ ス ト ベース ラ イ ン をTextBaseline::Top かTextBaseline::Middle に設定す る と 便利な こ と が多 く あ り ます。
これはオーバーロードされた関数です。
void QCanvasPainter::fillText(const QString &text, QPointF point, float maxWidth = -1)
text 文字列を、現在の textAlign と textBaseline で、指定されたpoint に描画します。テキス ト を複数行に折り返すには、 オプ シ ョ ナルなmaxWidth パラ メ タ を、 ピ ク セル単位で希望の行幅に設定 し ます。空白は行の先頭で除去 さ れ、 テ キ ス ト は単語境界か改行キ ャ ラ ク タ に出会 う と 分割 さ れます。最大幅よりも長い単語は、最も近い文字で分割されます (つまり、ハイフネーションは行われません)。
これはQPointF を使ったオーバーロードされたメソッドです。
これはオーバーロードされた関数です。
QTransform QCanvasPainter::getTransform() const
現在のトランスフォームを返します。
void QCanvasPainter::lineTo(float x, float y)
パ ス内の最後の点か ら 点(x,y) ま での線分を追加 し ます。
![]() | p->beginPath(); p->moveTo(20, 20); p->lineTo(140, 180); p->lineTo(180, 120); p->stroke(); |
void QCanvasPainter::lineTo(QPointF point)
パスの最後の点からpoint までの線分を追加します。
これはオーバーロードされた関数です。
[static] float QCanvasPainter::mmToPx(float mm)
ミリメートルmm をピクセルに変換する静的ヘルパーメソッド。これにより、解像度に依存しない描画が可能になります。例えば、線幅を 2mm に設定するには次のようにします:
painter->setLineWidth(QCanvasPainter::mmToPx(2));
void QCanvasPainter::moveTo(float x, float y)
(x,y) を最初の点として、新しいサブパスを開始する。
void QCanvasPainter::moveTo(QPointF point)
point を最初の点として新しいサブパスを開始する。
これはオーバーロードされた関数である。
[static] float QCanvasPainter::ptToPx(float pt)
点pt をピクセルに変換する静的ヘルパーメソッド。
void QCanvasPainter::quadraticCurveTo(float cpX, float cpY, float x, float y)
パ ス内の最後の点か ら 、 制御点(cpX,cpY) を経由 し て、 指定点(x,y) ま での二次ベ ジ エ 線分を追加 し ます。
![]() | 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)
パスの最後の点からcontrolPoint を経由して、指定されたendPoint に二次ベジエセグメントを追加します。
これはオーバーロードされた関数です。
void QCanvasPainter::rect(float x, float y, float width, float height)
位置x,y に、サイズwidth,height を持つ新しい矩形状のサブパスを作成する。
![]() | p->beginPath(); p->rect(20, 20, 160, 160); p->fill(); p->stroke(); |
void QCanvasPainter::rect(const QRectF &rect)
rect に新しい矩形状のサブパスを作成する。これはQRectF を使ったオーバーロードされたメソッドである。
これはオーバーロードされた関数です。
void QCanvasPainter::removeImage(const QCanvasImage &image)
image に関連付けられたリソースを解放し、ペインターから画像を削除します。
注意: テクスチャのようなリソースはペインターのデストラクタで解放されるため、通常この関数を呼び出す必要はありません。この関数は、たくさんの画像があり、そのうちのいくつかはもう使わないので、メモリ使用量を減らす必要がある場合に便利です。
注意: 削除された画像は、もうペイント操作では使えません。
注意: 基礎となる 3D API で作成されたテクスチャなどのリソースは、すぐには解放されないかもしれません。このような操作は、QCanvasPainter 、アクティブな描画呼び出しのセットが送信された後、この が再び描画を開始するときなど、後続のフレームに延期されることがあります。
addImage()も参照してください 。
void QCanvasPainter::removePathGroup(int pathGroup)
ペインターキャッシュからpathGroup を削除する。この後にpathGroup に対してfill() またはstroke() を呼び出すと、グループキャッシュにパスが再生成されます。
注意: パスはペインターのデストラクタで削除されるため、通常は呼び出す必要はありません。pathGroup が不要になったときや、パスのコマンド数が大幅に減ってバッファサイズが小さくなったときなど、メモリ使用量を減らすためだけに使用してください。
QCanvasPainter::RenderHints QCanvasPainter::renderHints() const
このペインターに設定されているレンダリングヒントを指定するフラグを返します。
setRenderHints() およびsetRenderHint()も参照 ください。
void QCanvasPainter::reset()
現在のペインターの状態をデフォルト値にリセットします。
注意: このメソッドは HTML canvas 2D context reset() メソッドとは異なり、canvas バッファを視覚的にクリアしません。
![]() | // 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); |
void QCanvasPainter::resetClipping()
クリッピングをリセットして無効にする。
setClipRect()も参照 。
void QCanvasPainter::resetTransform()
現在の変換を ID 行列にリセットします。
void QCanvasPainter::restore()
現在のレンダリング状態をポップ・アンド・リストアする。つまり、以前に保存された状態が復元される。save() が呼び出されておらず、状態スタックが空の場合、これを呼び出しても何も起こらない。
save()も参照 。
void QCanvasPainter::rotate(float angle)
現在の座標系を時計回 り にangle だけ回転 さ せます。
角度はラジアン単位で指定する。度からラジアンに変換するにはqDegreesToRadians() を使用します。
![]() | 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)
位置x,y に、サイズwidth,height で、丸みを帯びた長方形状の新しいサブパスを作成する。角丸はradius になります。
![]() | p->beginPath(); p->roundRect(20, 20, 160, 160, 30); p->fill(); p->stroke(); |
void QCanvasPainter::roundRect(const QRectF &rect, float radius)
radius のコーナーを持つrect に新しい丸みを帯びた矩形状のサブパスを作成する。これはQRectF を使ったオーバーロードされたメソッドである。
これはオーバーロードされた関数です。
void QCanvasPainter::roundRect(const QRectF &rect, float radiusTopLeft, float radiusTopRight, float radiusBottomRight, float radiusBottomLeft)
丸みを帯びた長方形のサブパスをrect に作成する。角の丸め方は、radiusTopLeft,radiusTopRight,radiusBottomRight,radiusBottomLeft と、角ごとに変えることができる。
これはオーバーロードされた関数です。
void QCanvasPainter::roundRect(float x, float y, float width, float height, float radiusTopLeft, float radiusTopRight, float radiusBottomRight, float radiusBottomLeft)
位置x,y に、サイズwidth,height で、丸みを帯びた長方形状の新しいサブパスを作成します。角の丸め方は、radiusTopLeft,radiusTopRight,radiusBottomRight,radiusBottomLeft と、角ごとに変えることができます。
![]() | p->beginPath(); p->roundRect(20, 20, 160, 160, 0, 40, 20, 80); p->fill(); p->stroke(); |
これはオーバーロードされた関数です。
void QCanvasPainter::save()
現在のレンダリング状態を状態スタックにプッシュして保存する。状態を復元するには、一致するrestore() を使用しなければならない。
![]() | 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); |
restore()も参照してください 。
void QCanvasPainter::scale(float scale)
カ レ ン ト 座標系をscale で拡大縮小 し ます。x 座標も y 座標も均等にスケーリングされます。
![]() | 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)
現在の座標系をscaleX とscaleY でスケーリングする。
これはオーバーロードされた関数です。
void QCanvasPainter::setAntialias(float antialias)
現在のアンチエイリアス量をピクセル単位でantialias に設定する。アンチエイリアスが大きいほど、ペイントが滑らかになります。こ れは塗 り と 描線にのみ影響 し 、 画像やテ キ ス ト には影響 し ません。デフォルト値は1.0 で、最大値は10.0 です。
アンチエイリアスはパスごとに変更できるので、各ストローク/塗りつぶしの前に設定できます。キャンバス全体のペインターからアンチエイリアスを無効にするには、QCanvasPainter::RenderHint::Antialiasing レンダーヒントを使用します。
![]() | 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(); } |
setRenderHints() およびsetTextAntialias()も参照してください 。
void QCanvasPainter::setBrushTransform(const QTransform &transform)
カ レ ン ト ブ ラ シの変形をtransform に設定 し ます。 こ の変形は、 描線ブラシ と 塗 り ブラシの両方に適用 さ れます。
void QCanvasPainter::setClipRect(float x, float y, float width, float height)
カ レ ン ト の切 り 込み矩形を (x,y,width,height )に設定 し ます。ハサミ矩形は現在のトランスフォームによって変換されます。
注意: クリッピングにはパフォーマンス上のコストがあるため、必要な場合にのみ使用してください。
![]() | 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); |
resetClipping()も参照してください 。
void QCanvasPainter::setClipRect(const QRectF &rect)
カ レ ン ト の切 り 抜き矩形をrect に設定 し ます。 切 り 抜 き 矩形はカ レ ン ト の変形で変換 さ れます。
注意: クリッピングにはパフォーマンス上のコストがあるので、必要なときだけ使うようにしましょう。
これはオーバーロードされた関数です。
resetClipping()も参照してください 。
void QCanvasPainter::setFillStyle(const QColor &color)
塗 り のス タ イルをベタcolor 。 デフ ォル ト の塗 り のス タ イルは黒ベタ (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)
塗りつぶしスタイルをbrush に設定します。 デフォルトの塗りつぶしスタイルは黒ベタ(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); |
これはオーバーロードされた関数です。
void QCanvasPainter::setFont(const QFont &font)
font を現在アクティブなフォントとして設定する。
void QCanvasPainter::setGlobalAlpha(float alpha)
グローバルなアルファ値 (透明度) をalpha に設定します。 このアルファ値は、レンダリングされるすべての図形に適用されます。すでに透明なパスも比例して透明になります。アルファ値は 0.0(完全に透明)から 1.0(完全に不透明)の間でなければなりません。デフォルトのアルファ値は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->setGlobalAlpha(1.0 - i * 0.3); p->fillRect(rect); p->drawImage(image, rect); } |
void QCanvasPainter::setGlobalBrightness(float value)
グローバルな明るさをvalue に設定します。 この明るさは、レンダリングされたすべての図形に適用されます。値が 0 の場合、描画は完全に黒くなります。値を 1.0 より大きくすると、明るさが増します。デフォルトでは、明るさは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)
グローバル合成操作モードをoperation に設定します。 このモードはすべてのペインティング操作に適用されます。デフ ォル ト のモー ド はQCanvasPainter::CompositeOperation::SourceOver です。
void QCanvasPainter::setGlobalContrast(float value)
グローバルコントラストをvalue に設定します。 このコントラストはレンダリングされたすべての図形に適用されます。値が 0 の場合、描画は完全に灰色になります(0.5, 0.5, 0.5)。値を 1.0 よ り 大 き く す る こ と も で き 、 コ ン ト ラ ス ト を強め る こ と がで き ます。デフォルトでは、コントラストは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)
グローバルな彩度をvalue に設定します。この彩度はレンダリングされたすべての形状に適用されます。値を 0 に設定すると彩度が無効になり、ペイントは完全にグレースケールになります。値を 1.0 より大きくすると、彩度を上げることもできます。デフォルトでは、彩度は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)
ストークの行末をcap に設定する。 デフォルトのラインキャップは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)
stroke の線結合をjoin に設定し ます。 デフ ォル ト の線結合は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); |
setMiterLimit()も参照 。
void QCanvasPainter::setLineWidth(float width)
stroke の線幅をピクセル単位でwidth に設定します。デフォルトの線幅は1.0 。アンチエイリアシングを有効にすると、1ピクセル以下の線幅は自動的に不透明度が薄くなり、滑らかな出力になります。
![]() | 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(); } |
stroke()も参照 。
void QCanvasPainter::setMiterLimit(float limit)
マイターリミットをlimit に設定する。マイターリミットは、鋭いコーナーが面取りされるタイミングを制御します。コーナーの長さがこの制限より長くなる場合、代わりにライン間にQCanvasPainter::LineJoin::Bevel が適用されます。こ れはQCanvasPainter::LineJoin::Miter の線結合に対 し てのみ効力を持ち ます。デフ ォル ト の制限は10.0 です。
setLineJoin()も参照 。
void QCanvasPainter::setPathWinding(QCanvasPainter::PathWinding winding)
現在のサブパスwinding をCounterClockWise (デフォルト) またはClockWise のいずれかに設定します。CounterClockWise は実線のサブパスを描画し、ClockWise は穴を描画します。
![]() | 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(); |
beginHoleSubPath() およびbeginSolidSubPath()も参照 。
void QCanvasPainter::setRenderHint(QCanvasPainter::RenderHint hint, bool on = true)
on が true の場合、指定されたレンダーhint をペインターに設定します。そうでない場合、レンダーヒントをクリアします。
setRenderHints() およびrenderHints()も参照してください 。
void QCanvasPainter::setRenderHints(QCanvasPainter::RenderHints hints, bool on = true)
on が true の場合、指定されたレンダーhints をペインターに設定します。それ以外の場合、レンダーヒントをクリアします。
setRenderHint() およびrenderHints()も参照してください 。
void QCanvasPainter::setStrokeStyle(const QColor &color)
描線ス タ イルをベタcolor 。 デフ ォル ト の描線ス タ イルは黒ベタ (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)
ストロークスタイルをbrush に設定します。 デフォルトのストロークスタイルは黒ベタ(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); |
これはオーバーロードされた関数です。
void QCanvasPainter::setTextAlign(QCanvasPainter::TextAlign align)
テ キ ス ト の横揃えをalign に設定 し ます。 デフ ォル ト の横揃えは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); |
setTextBaseline()も参照 。
void QCanvasPainter::setTextAntialias(float antialias)
現在のテキス ト アンチエイリアス量を設定。値antialias は通常のアンチエイリアシングに対する倍率で、つまり0.0 はアンチエイリアシングを無効にし、2.0 はそれを 2 倍にします。デフォルト値は1.0です。
注: 使用されているテキスト・アンチエイリアス技法(SDF)のため、アンチエイリアス量の最大値はかなり制限されており、フォントサイズが小さい場合にはあまり影響しません。
![]() | 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)
テキス ト の縦揃え (ベース ラ イ ン) をbaseline に設定 し ます。 デフ ォル ト の縦揃えは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); |
setTextAlign()も参照 。
void QCanvasPainter::setTextDirection(QCanvasPainter::TextDirection direction)
テ キ ス ト の方向をdirection に設定 し ます。 デフ ォル ト の方向はQCanvasPainter::TextDirection::Inherit です。
void QCanvasPainter::setTextLineHeight(float height)
折 り 返 し テキス ト の行の高 さ の調整を ピ ク セル単位でheight に設定 し ます。デフ ォル ト の行の高 さ は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)
テキス ト の回 り 込みモー ド をwrapMode に設定 し ます。 デフ ォル ト の回 り 込みモー ド は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)
現在の変換をリセットし、代わりに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(); |
transform()も参照 。
void QCanvasPainter::skew(float angleX, float angleY = 0.0f)
カ レ ン ト 座標系を X 軸に沿っ てangleX 、Y 軸に沿っ てangleY 、スキュー (シアー) さ せます。角度はラジアン単位で指定します。
![]() | 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()
カ レ ン ト パ ス を カ レ ン ト 描線ス タ イルで描線 し ます。
![]() | p->beginPath(); p->rect(20, 20, 40, 160); p->rect(140, 20, 40, 160); p->circle(100, 100, 60); p->stroke(); |
setStrokeStyle()も参照 。
void QCanvasPainter::stroke(const QCanvasPath &path, int pathGroup = 0)
現在のストロークスタイルでpath をストロークし、pathGroup に属する。QCanvasPath を通 じ て描 く こ と は、 パ ス に よ り 多 く の コ マ ン ド が含まれてお り 、 その大部分が静的であ る と き に最適です。デフォルトでは、pathGroup は0 であるため、最初のグループを使用します。pathGroup が-1 の場合、パスは GPU 側でキャッシュされません。パス・キャッシュ・グループの使用に関する詳細は、QCanvasPath ドキュメントを参照してください。このメソッドの前にbeginPath() を呼び出す必要はありません。
![]() | // 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); |
これはオーバーロードされた関数です。
setStrokeStyle()も参照してください 。
void QCanvasPainter::strokeRect(float x, float y, float width, float height)
指定した位置 (x,y) に、矩形をサイズwidth,height で描画します。
注意: これは便宜上提供されています。複数の矩形を描画する場合は、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)
rect に矩形を描画します。これはQRectF を使ったオーバーロードされたメソッドです。
注意: これは便宜上提供されています。1つ以上の矩形を描画する場合は、rect() を使用することをお勧めします。
これはオーバーロードされた関数です。
QRectF QCanvasPainter::textBoundingBox(const QString &text, float x, float y, float maxWidth = -1)
text の文字列の外接枠を (x,y) で測定する。複数行のテキストを測定するには、オプションのパラメータmaxWidth に、希望する行の幅をピクセル単位で設定します。値 [xmin, ymin, width, height] を持つQRectF を返します。測定値は、 ロ ーカル座標空間で返 さ れます。
![]() | 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)
rect のtext 文字列の外接枠を測定する。値 [xmin, ymin, width, height] を持つQRectF を返します。測定値はローカル座標空間で返されます。
これはオーバーロードされた関数です。
QRectF QCanvasPainter::textBoundingBox(const QString &text, QPointF point, float maxWidth = -1)
point でtext 文字列の外接枠を測定する。複数行のテキストを測定するには、オプションのパラメータmaxWidth に、希望する行の幅をピクセル単位で設定します。値 [xmin, ymin, width, height] を持つQRectF を返します。測定値はローカル座標空間で返されます。
これはオーバーロードされた関数です。
void QCanvasPainter::transform(const QTransform &transform)
現在の座標系に、 指定 し た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(); } |
setTransform()も参照 。
void QCanvasPainter::translate(float x, float y)
現在の座標系をx と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)
現在の座標系をpoint で変換する。
これはオーバーロードされた関数である。
© 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.
























































