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 } |
(since 6.12) enum class | FillRule { NonZero, EvenOdd } |
| enum class | ImageFlag { GenerateMipmaps, RepeatX, RepeatY, Repeat, FlipY, …, Nearest } |
| flags | ImageFlags |
| enum class | LineCap { Butt, Round, Square } |
| enum class | LineJoin { Round, Bevel, Miter } |
| enum class | PathConnection { NotConnected, Connected } |
| enum class | PathWinding { CounterClockWise, ClockWise } |
| enum class | TextAlign { Left, Right, Center, Start, End } |
| enum class | TextBaseline { Top, Hanging, Middle, Alphabetic, Bottom } |
| enum class | TextDirection { LeftToRight, RightToLeft, Inherit, Auto } |
| enum class | WrapMode { NoWrap, Wrap, WordWrap, WrapAnywhere } |
パブリック関数
| QCanvasPainter() | |
| ~QCanvasPainter() | |
| qsizetype | activeImageCount() const |
| qsizetype | activeImageMemoryUsage() const |
| QCanvasImage | addImage(const QImage &image, QCanvasPainter::ImageFlags flags = {}) |
| QCanvasImage | addImage(QRhiTexture *texture, QCanvasPainter::ImageFlags flags = {}) |
| QCanvasImage | addImage(const QCanvasOffscreenCanvas &canvas, QCanvasPainter::ImageFlags flags = {}) |
| void | addPath(const QPainterPath &path) |
| void | addPath(const QCanvasPath &path, const QTransform &transform = QTransform()) |
| void | addPath(const QCanvasPath &path, qsizetype start, qsizetype count, const QTransform &transform = QTransform()) |
| void | arc(qreal centerX, qreal centerY, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected) |
| void | arc(QPointF centerPoint, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected) |
| void | arcTo(qreal x1, qreal y1, qreal x2, qreal y2, qreal radius) |
| void | arcTo(QPointF controlPoint1, QPointF controlPoint2, qreal radius) |
| void | beginHoleSubPath() |
| void | beginPath() |
| void | beginSolidSubPath() |
| void | bezierCurveTo(qreal cp1X, qreal cp1Y, qreal cp2X, qreal cp2Y, qreal x, qreal y) |
| void | bezierCurveTo(QPointF controlPoint1, QPointF controlPoint2, QPointF endPoint) |
| void | circle(qreal centerX, qreal centerY, qreal radius) |
| void | circle(QPointF centerPoint, qreal radius) |
| void | cleanupResources() |
| void | clearRect(qreal x, qreal y, qreal width, qreal height) |
| void | clearRect(const QRectF &rect) |
| void | closePath() |
| QCanvasOffscreenCanvas | createCanvas(QSize pixelSize, int sampleCount = 1, QCanvasOffscreenCanvas::Flags flags = {}) |
| void | destroyCanvas(QCanvasOffscreenCanvas &canvas) |
| void | drawBoxShadow(const QCanvasBoxShadow &shadow) |
| void | drawImage(const QCanvasImage &image, qreal x, qreal y) |
| void | drawImage(const QCanvasImage &image, const QRectF &destinationRect) |
| void | drawImage(const QCanvasImage &image, const QRectF &sourceRect, const QRectF &destinationRect) |
| void | drawImage(const QCanvasImage &image, qreal x, qreal y, qreal width, qreal height) |
| void | ellipse(qreal centerX, qreal centerY, qreal radiusX, qreal radiusY) |
| void | ellipse(const QRectF &rect) |
| void | ellipse(QPointF centerPoint, qreal radiusX, qreal radiusY) |
| void | fill() |
(since 6.12) void | fill(QCanvasPainter::FillRule fillRule) |
| void | fill(const QCanvasPath &path, int pathGroup = -1) |
(since 6.12) void | fill(const QCanvasPath &path, QCanvasPainter::FillRule fillRule, int pathGroup = -1) |
| void | fillRect(qreal x, qreal y, qreal width, qreal height) |
| void | fillRect(const QRectF &rect) |
| void | fillText(const QString &text, qreal x, qreal y, qreal maxWidth = 0) |
| void | fillText(const QString &text, const QRectF &rect) |
| void | fillText(const QString &text, QPointF point, qreal maxWidth = 0) |
| QTransform | getTransform() const |
| void | lineTo(qreal x, qreal y) |
| void | lineTo(QPointF point) |
| void | moveTo(qreal x, qreal y) |
| void | moveTo(QPointF point) |
| void | quadraticCurveTo(qreal cpX, qreal cpY, qreal x, qreal y) |
| void | quadraticCurveTo(QPointF controlPoint, QPointF endPoint) |
| void | rect(qreal x, qreal y, qreal width, qreal height) |
| void | rect(const QRectF &rect) |
| void | removeImage(const QCanvasImage &image) |
| void | removePathGroup(int pathGroup) |
| void | reset() |
| void | resetClipping() |
| void | resetTransform() |
| void | restore() |
| void | rotate(qreal angle) |
| void | roundRect(qreal x, qreal y, qreal width, qreal height, qreal radius) |
| void | roundRect(const QRectF &rect, qreal radius) |
| void | roundRect(const QRectF &rect, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft) |
| void | roundRect(qreal x, qreal y, qreal width, qreal height, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft) |
| void | save() |
| void | scale(qreal scale) |
| void | scale(qreal scaleX, qreal scaleY) |
| void | setAntialias(qreal antialias) |
| void | setClipRect(qreal x, qreal y, qreal width, qreal height) |
| void | setClipRect(const QRectF &rect) |
(since 6.12) void | setFillRule(QCanvasPainter::FillRule fillRule) |
| void | setFillStyle(QColor color) |
| void | setFillStyle(const QCanvasBrush &brush) |
| void | setFont(const QFont &font) |
| void | setGlobalAlpha(qreal alpha) |
| void | setGlobalBrightness(qreal value) |
| void | setGlobalCompositeOperation(QCanvasPainter::CompositeOperation operation) |
| void | setGlobalContrast(qreal value) |
| void | setGlobalSaturation(qreal value) |
| void | setHighQualityStroking(bool enabled) |
| void | setLineCap(QCanvasPainter::LineCap cap) |
| void | setLineJoin(QCanvasPainter::LineJoin join) |
| void | setLineWidth(qreal width) |
| void | setMiterLimit(qreal limit) |
| void | setPathWinding(QCanvasPainter::PathWinding winding) |
| void | setStrokeStyle(QColor color) |
| void | setStrokeStyle(const QCanvasBrush &brush) |
| void | setTextAlign(QCanvasPainter::TextAlign align) |
| void | setTextAntialias(qreal antialias) |
| void | setTextBaseline(QCanvasPainter::TextBaseline baseline) |
| void | setTextDirection(QCanvasPainter::TextDirection direction) |
| void | setTextLineHeight(qreal height) |
| void | setTextWrapMode(QCanvasPainter::WrapMode wrapMode) |
| void | setTransform(const QTransform &transform) |
| void | setWindingEnforce(bool enabled) |
| void | skew(qreal angleX, qreal angleY = 0.0) |
| void | stroke() |
| void | stroke(const QCanvasPath &path, int pathGroup = -1) |
| void | strokeRect(qreal x, qreal y, qreal width, qreal height) |
| void | strokeRect(const QRectF &rect) |
| QRectF | textBoundingBox(const QString &text, qreal x, qreal y, qreal maxWidth = 0) const |
| QRectF | textBoundingBox(const QString &text, const QRectF &rect) const |
| QRectF | textBoundingBox(const QString &text, QPointF point, qreal maxWidth = 0) const |
| void | transform(const QTransform &transform) |
| void | translate(qreal x, qreal y) |
| void | translate(QPointF point) |
詳細な説明
Qt Canvas Painter (QCanvasPainter) は、ハードウェアアクセラレーション(GPU)による描画に最適化された描画 API を提供します。この API は、HTML Canvas 2D コンテキスト仕様に厳密に従い、Qt C++ に移植されたものです。また、QPainter の影響も受けていますが、よりコンパクトな API となっています。
以下は、QCanvasPainter を使用して丸いボタンを作成する簡単な例です。
![]() | |
以下は、単純なグラフを描画する別の例です。
![]() | |
機能
概して、また命名規則の観点から、QCanvasPainterはHTML Canvas 2D Context (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と比較して、少なくとも現時点では実装されていない機能の一部です:
- クリッピング:すべてのクリッピングは(変形された)矩形であり、パス形状へのクリッピングはサポートされていません。
- 破線:ストロークは常に実線であり、破線や点線のストロークパターンはサポートされていません。
- パス検査:isPointInPath() や isPointInStroke() メソッドは存在しません。
- テキストのストローク:テキストのアウトラインストロークはサポートされていません。
- フィルタ:CanvasのSVGフィルタ効果はサポートされていません。
- 合成モード:合成モードの数は 3 つに制限されており、追加のバッファにレンダリングすることなくサポート可能です。
- シャドウ:組み込みのシャドウメソッドはサポートされていません。
一方、HTML Canvasと比較してQCanvasPainterが提供する追加機能には、次のようなものがあります。
- パスグループ:QCanvasPainter では、静的なパスへの描画が可能であり、GPU を最適に活用するために、これらのパスをグループとしてキャッシュすることができます。
- 調整可能なアンチエイリアシング: パス頂点のアンチエイリアシングと SDF テキストレンダリングにより、アンチエイリアシングのピクセル数を自由に調整して、より滑らかな描画を実現できます。
- ボックスグラデーション:線形、放射状、円錐状のグラデーションに加え、QCanvasPainterは角丸長方形のボックスグラデーションもサポートしています。
- ボックスシャドウ:QCanvasPainter は、CSS の box-shadow タイプのブラシもサポートしています。レンダリングには、Qt Quick RectangularShadow と同様の SDF アプローチが採用されており、非常に高いパフォーマンスを発揮します。
- グリッドパターン:QCanvasPainterは、動的なグリッドおよびバーパターンのスタイルのためにQCanvasGridPattern をサポートしています。
- カスタムブラシ:QCanvasPainter では、カスタム頂点シェーダーおよびフラグメントシェーダー(QCanvasCustomBrush )を使用した塗りつぶしやストロークも可能です。これらのカスタムブラシはテキストにも使用できます。
- テキストの折り返し: QCanvasPainter は、さまざまな折り返しモードによるテキストの複数行への自動折り返しをサポートしています。
- カラーエフェクト:globalAlpha に加え、QCanvasPainter はグローバルな明るさ、コントラスト、彩度もサポートしています。
- 色調のついた画像:QCanvasPainter は、描画された画像や画像パターンに対して色調のサポートを追加しています。
QCanvasPainterはアーキテクチャに依存せず、Qt Quick およびQt Widgets アプリケーションの両方で使用可能です。実際、これらを使用しなくても、QWindow およびQRhi だけで利用できます。QCanvasPainterを利用するには、アプリケーションのアーキテクチャに応じて、以下のクラスのいずれかから使用してください:
- Qt Quick: `QCanvasPainterItem ` および `QCanvasPainterItemRenderer` を使用します。
- Qt Widgets: `QCanvasPainterWidget` を使用します。
- QRhi QWindow ベース、またはオフスクリーンの バッファを使用する場合: および を使用してください。QRhi QCanvasPainterFactory QCanvasRhiPaintDriver
塗りつぶしルール
QCanvasPainter は、デフォルトでNonZero ({Qt::WindingFill}) 塗りつぶしルールを使用します。パス上の点の方向に基づいて塗りつぶしを選択するには、setWindingEnforce(false) を呼び出して、巻き方向の強制を無効にしてください。
![]() | |
ただし、より一般的なケースとしては、巻き方向の強制に依存し、setPathWinding() またはbeginHoleSubPath() およびbeginSolidSubPath() ヘルパーを使用して、希望する巻き方向を設定する方法が挙げられます。
![]() | |
メンバ型のドキュメント
enum class QCanvasPainter::CompositeOperation
Qt Canvas Painter は、以下の 3 つの合成操作をサポートしています:
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::CompositeOperation::SourceOver | 0 | デフォルト値。既存のコンテンツの上に新しい図形を描画します。 |
QCanvasPainter::CompositeOperation::SourceAtop | 1 | 新しい図形は、既存のコンテンツと重なる部分のみ描画されます。 |
QCanvasPainter::CompositeOperation::DestinationOut | 2 | 新しい図形と重ならない部分については、既存のコンテンツが保持されます。 |
関連項目: setGlobalCompositeOperation()。
[since 6.12] enum class QCanvasPainter::FillRule
この列挙型は、パスの埋め込み方法を指定します。
| 定数 | 値 | 説明 |
|---|---|---|
QCanvasPainter::FillRule::NonZero | 0 | パスは、ゼロ以外のワインディングルールを使用して塗りつぶされます。このルールでは、次の方法を用いて、点が図形の内部にあるかどうかを判定します。その点から図形の外側の位置まで水平線を引きます。各交点における線の方向が上向きか下向きかを判定します。 各交点における線の方向を合計することで、ワインディング数が決定されます。その数が 0 以外の場合、その点は図形の内部にあります。この塗りつぶしモードは、ほとんどの場合、閉じた図形の交点として考えることもできます。このモードがデフォルトです。 |
QCanvasPainter::FillRule::EvenOdd | 1 | パスは、奇数・偶数塗りつぶしルールを使用して塗りつぶされます。このルールでは、点が図形の内部にあるかどうかを次の方法で判定します。その点から図形の外側の位置まで水平線を引いて、交点の数を数えます。交点の数が奇数であれば、その点は図形の内部にあります。 |
この列挙型は Qt 6.12 で導入されました。
fill()も参照してください 。
enum class QCanvasPainter::ImageFlag
flags QCanvasPainter::ImageFlags
この列挙型は、画像に関連するフラグを指定します。フラグを設定するには、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 | 画像の補間は「線形」ではなく「最近傍」です。 |
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 | (デフォルト) 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::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
このペインターに対して、QImage を引数とするaddImage()のオーバーロードによって作成された、すべてのアクティブなQCanvasImage インスタンスについて、画像(ピクセル)データが使用するメモリのおおよその量(キロバイト単位)を返します。これには、gradients 用に内部で作成された画像のデータも含まれます。
QCanvasPainter addImage()が返った後、CPU側の データのコピーは保持されません。したがって、この関数の結果は、テクスチャに使用されるGPUメモリの近似値となります。QImage
注:この 値は 、画像形式と寸法に基づいた推定値に過ぎません。Qtは、テクスチャ用のデータがGPU側のメモリにどのように格納され、配置されているかについては認識していません。
addImage() の他のオーバーロードを介して登録されたオフスクリーン・キャンバスや外部管理のテクスチャは、この関数では考慮されません。
有効な `QCanvasImage` については、sizeInBytes()` を呼び出すことで、個々のサイズ(バイト単位)を常に照会できます。この関数は、QCanvasImage が `QCanvasOffscreenCanvas ` または `QRhiTexture` から作成された場合にも有効な結果を返しますが、ミップマップやマルチサンプルデータは考慮しません。
activeImageCount()、addImage()、およびremoveImage()も参照してください 。
QCanvasImage QCanvasPainter::addImage(const QImage &image, QCanvasPainter::ImageFlags flags = {})
image を追加し、flags をペインターがテクスチャとして利用できるようにします。QCanvasImage を、テクスチャIDや画像に関するその他の情報とともに返します。返されたQCanvasImage は、drawImage やQCanvasImagePattern で使用できます。このメソッドを呼び出した後、image QImage をメモリ内に保持しておく必要はありません。
同じimage を使用して呼び出すことは、キャッシュヒットが見込まれるため、負荷の少ない操作です。
addImage() を 1 回だけ呼び出すように最適化を行う際は注意が必要です。アプリケーションの設計によっては、それだけでは不十分な場合もあります。 たとえば、ウィジェットが新しいトップレベルに移動されたことにより、内部でペインターが新しいQRhi に関連付けられ、基になるグラフィックリソースが失われた場合、image からネイティブのグラフィックテクスチャを再作成するには、この関数を呼び出すことが不可欠です。
drawImage() およびremoveImage()も参照してください 。
QCanvasImage QCanvasPainter::addImage(QRhiTexture *texture, QCanvasPainter::ImageFlags flags = {})
texture を追加し、flags をペインター用のテクスチャとして利用可能にします。返される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 では デフォルトでNonZero (Qt::WindingFill) の fillRule が使用されますが、QPainterPath ではデフォルトでQt::OddEvenFill が使用されます。そのため、必要に応じて、例えばsetFillRule() を使用するなどして、fillRule を切り替えることを忘れないでください。
注:このメソッドは 、主にQPainter およびQPainterPath との互換性を確保するために用意されています。QCanvasPainter メソッドを使用してパスを直接描画する場合と比べて、パフォーマンスの向上にはつながりません。
void QCanvasPainter::addPath(const QCanvasPath &path, const QTransform &transform = QTransform())
path を現在のパスに追加します。必要に応じてtransform を使用して、パスの各点を変更することもできます。transform が指定されていない場合(またはそれが単位行列である場合)、パスデータを再利用するため、この操作は非常に高速に行われます。
![]() | |
void QCanvasPainter::addPath(const QCanvasPath &path, qsizetype start, qsizetype count, const QTransform &transform = QTransform())
start のコマンドから始まり、count 個のコマンドを含む、path を現在のパスに追加します。必要に応じて、transform を使用してパスの指す先を変更できます。start とcount の範囲がチェックされるため、QCanvasPath::commandsSize() を超えるコマンドにはアクセスされません。パスを現在のパス位置から継続させない場合は、まずmoveTo() を呼び出してください(例:path.positionAt(start - 1) )。
![]() | |
void QCanvasPainter::arc(qreal centerX, qreal centerY, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
新しい円弧状のサブパスを作成します。円弧の中心はcenterX 、centerY にあり、半径はradius です。円弧は角度a0 からa1 まで描かれ、direction (ClockWise またはCounterClockWise )でスイープされます。connection がNotConnected の場合、円弧は前のパスの位置から円弧の始点まで線を追加しません。角度はラジアン単位で指定されます。
![]() | |
注: HTML Canvas 2D コンテキストでは、 円の描画に arc()を使用しますが 、QCanvasPainter では、その代わりにcircle() またはellipse() を使用することを推奨します。
void QCanvasPainter::arc(QPointF centerPoint, qreal radius, qreal a0, qreal a1, QCanvasPainter::PathWinding direction = PathWinding::ClockWise, QCanvasPainter::PathConnection connection = PathConnection::Connected)
新しい円弧状のサブパスを作成します。円弧の中心はcenterPoint にあり、半径はradius です。円弧は角度a0 からa1 まで描画され、direction (ClockWise またはCounterClockWise )でスイープされます。connection がNotConnected の場合、円弧は前のパスの位置から円弧の始点までの線を追加しません。角度はラジアン単位で指定されます。
注: HTML Canvas 2D コンテキストでは、 円の描画に arc()が使用されますが 、QCanvasPainter では、その代わりにcircle() またはellipse() を使用することが推奨されます。
これはオーバーロードされた関数です。
void QCanvasPainter::arcTo(qreal x1, qreal y1, qreal x2, qreal y2, qreal radius)
最後のパスポイントと、指定された2つの点(x1 、y1 およびx2 、y2 )を、radius で結ぶ円弧のセグメントを、その角に追加します。必要に応じて、この円弧はパスの最新のポイントと直線で自動的に接続されます。
![]() | |
void QCanvasPainter::arcTo(QPointF controlPoint1, QPointF controlPoint2, qreal radius)
最後のパスポイントと、指定された2つの点(controlPoint1 およびcontrolPoint2 )を、radius で結ぶ円弧セグメントを、その角に追加します。必要に応じて、この円弧はパスの最新のポイントと直線で自動的に接続されます。
これはオーバーロードされた関数です。
void QCanvasPainter::beginHoleSubPath()
「hole」サブパスを開始します。これは、setPathWinding(QCanvasPainter::PathWinding::ClockWise)) と同等です。
![]() | |
beginSolidSubPath( )も参照してください 。
void QCanvasPainter::beginPath()
現在のパスをクリアしながら、新しいパスの描画を開始します。
void QCanvasPainter::beginSolidSubPath()
堅牢なサブパスを開始します。これは、setPathWinding(QCanvasPainter::PathWinding::CounterClockWise)) と同等です。
beginHoleSubPath()も参照してください 。
void QCanvasPainter::bezierCurveTo(qreal cp1X, qreal cp1Y, qreal cp2X, qreal cp2Y, qreal x, qreal y)
パスの最後の点から、2つの制御点(cp1X 、cp1Y およびcp2X 、cp2Y )を経由して、指定された点(x 、y )まで、3次ベジエ曲線のセグメントを追加します。
![]() | |
void QCanvasPainter::bezierCurveTo(QPointF controlPoint1, QPointF controlPoint2, QPointF endPoint)
パスの最後の点から、2つの制御点(controlPoint1 およびcontrolPoint2 )を経由して、指定された点endPoint まで、3次ベジエ曲線のセグメントを追加します。
これはオーバーロードされた関数です。
void QCanvasPainter::circle(qreal centerX, qreal centerY, qreal radius)
(centerX,centerY)を中心とし、半径radius の新しい円形のサブパスを作成します。
![]() | |
void QCanvasPainter::circle(QPointF centerPoint, qreal radius)
centerPoint を中心とし、radius の半径を持つ新しい円形のサブパスを作成します。
これはオーバーロードされた関数です。
void QCanvasPainter::cleanupResources()
キャッシュから未使用のテクスチャを削除するスケジュール。
さらに、メモリ使用量を最小限に抑えるため、この関数の呼び出しに伴い、他のキャッシュやプールが縮小される場合があります。これにより、その後の描画処理のコストが増加する可能性があります。
void QCanvasPainter::clearRect(qreal x, qreal y, qreal width, qreal height)
x 、y 、width 、height で指定された矩形領域内のピクセルを、透明な黒で塗りつぶして消去します。消去処理にはブレンド処理が不要なため、fillRect() よりも高速に実行される場合があります。
![]() | |
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 を渡してください。
キャンバスへのマルチサンプルレンダリング(マルチサンプルアンチエイリアシング、MSAA)を要求するには、サンプル数を 1 より大きい値(4 や 8 など)に設定します。ただし、マルチサンプリングが有効になっている場合、レンダリングパス間でキャンバスの内容を保持することはサポートされておらず、この場合はPreserveContents フラグは機能しません。
注: オフスクリーン・キャンバスは 、メインのレンダリングターゲットとは独立したテクスチャによって裏付けられており、そこへのレンダリングは常にスケール係数(デバイス・ピクセル比)1で行われます。たとえば、QCanvasPainterWidget の実際のレンダリング寸法に一致するキャンバスを作成するには、size() * devicePixelRatio() をpixelSize として渡してください。これは、ウィジェットのsize() が、スケール係数を含まない論理サイズにすぎないためです。
void QCanvasPainter::destroyCanvas(QCanvasOffscreenCanvas &canvas)
canvas を支えているリソースを破棄します。これにより、canvas はnull canvas となります。
ペインターは、破棄時に自動的にこの処理を行います。したがって、この関数を呼び出す必要があるのは、関連するリソースを直ちに解放したい場合のみです。
void QCanvasPainter::drawBoxShadow(const QCanvasBoxShadow &shadow)
shadow を使用してボックスを描画します。シャドウは、shadow で定義された位置、サイズ、色、ぼかしなどの設定に従って描画されます。このメソッドを呼び出す前にbeginPath() を呼び出す必要はありません。
注: drawBoxShadow() で描画される領域を視覚的に確認するには 、QCPAINTER_DEBUG_SHADOW_RECT 環境変数を設定してください。
![]() | |
QCanvasBoxShadowも参照してください 。
void QCanvasPainter::drawImage(const QCanvasImage &image, qreal x, qreal y)
image を、デフォルトのサイズでx およびy に描画します。
![]() | |
addImage()も参照してください 。
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &destinationRect)
image を、destinationRect の位置とサイズに合わせて描画します。
これはオーバーロードされた関数です。
addImage()も参照してください 。
void QCanvasPainter::drawImage(const QCanvasImage &image, const QRectF &sourceRect, const QRectF &destinationRect)
画像のsourceRect 領域から、image をdestinationRect の位置とサイズに合わせて描画します。
![]() | |
これはオーバーロードされた関数です。
addImage()も参照してください 。
void QCanvasPainter::drawImage(const QCanvasImage &image, qreal x, qreal y, qreal width, qreal height)
image を、指定されたwidth およびheight において、x 、y に描画します。
![]() | |
これはオーバーロードされた関数です。
addImage()も参照してください 。
void QCanvasPainter::ellipse(qreal centerX, qreal centerY, qreal radiusX, qreal radiusY)
(centerX,centerY) を中心とし、radiusX およびradiusY を持つ新しい楕円形のサブパスを作成します。
![]() | |
void QCanvasPainter::ellipse(const QRectF &rect)
rect 内に、新しい楕円形のサブパスを作成します。この楕円は、rect の領域を覆うことになります。
![]() | |
これはオーバーロードされた関数です。
void QCanvasPainter::ellipse(QPointF centerPoint, qreal radiusX, qreal radiusY)
centerPoint を中心とし、radiusX およびradiusY のパラメータを持つ、新しい楕円形のサブパスを作成します。
これはオーバーロードされた関数です。
void QCanvasPainter::fill()
現在のパスに、現在の塗りつぶしスタイルと塗りつぶしルールを適用します。
![]() | |
setFillStyle() およびsetFillRule()も参照してください 。
[since 6.12] void QCanvasPainter::fill(QCanvasPainter::FillRule fillRule)
現在のパスを、現在の塗りつぶしスタイルおよび塗りつぶしルールfillRule で塗りつぶします。
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
setFillStyle() およびsetFillRule()も参照してください 。
void QCanvasPainter::fill(const QCanvasPath &path, int pathGroup = -1)
path を、現在の塗りつぶしスタイルと塗りつぶしルールで塗りつぶし、pathGroup に格納します。QCanvasPath による描画は、パスに含まれるコマンドが多く、かつその大部分が静的な場合に最適です。
pathGroup が-1 の場合、パスはGPU側でキャッシュされません。これがデフォルトの設定です。パスデータのキャッシュを要求するには、0 以上の値を指定してください。パスキャッシュグループの使用に関する詳細については、QCanvasPath のドキュメントを参照してください。
このメソッドを呼び出す前にbeginPath() を呼び出す必要はありません。
![]() | |
これはオーバーロードされた関数です。
setFillStyle()、setFillRule()、およびremovePathGroup()も参照してください 。
[since 6.12] void QCanvasPainter::fill(const QCanvasPath &path, QCanvasPainter::FillRule fillRule, int pathGroup = -1)
path に、現在の塗りつぶしスタイルと塗りつぶしルールを適用しますfillRule
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
void QCanvasPainter::fillRect(qreal x, qreal y, qreal width, qreal height)
指定された位置(x 、y )に、サイズwidth 、height の塗りつぶされた長方形を描画します。
注:これは 利便性のために提供されています。複数の矩形を塗りつぶす場合は、rect() を使用することを推奨します。
![]() | |
void QCanvasPainter::fillRect(const QRectF &rect)
rect に塗りつぶされた矩形を描画します。これは、QRectF を使用したオーバーロードされたメソッドです。
注:これは 利便性のために提供されています。複数の矩形を塗りつぶす場合は、rect() を使用することを推奨します。
これはオーバーロードされた関数です。
void QCanvasPainter::fillText(const QString &text, qreal x, qreal y, qreal maxWidth = 0)
指定された位置(x 、y )に、現在のtextAlignおよびtextBaselineを使用して、text 文字列を描画します。テキストを複数行に折り返すには、setTextWrapMode() を使用して、テキストの折り返しモードをデフォルトのNoWrap 以外の値に設定してください。オプションのmaxWidth パラメータのデフォルト値は0 です。つまり、例えばWordWrap が設定されている場合、テキストは単語ごとに折り返されます。maxWidth パラメータを、希望する行幅(ピクセル単位)に設定します。
![]() | |
setTextAlign()、setTextBaseline()、およびsetTextWrapMode()も参照してください 。
void QCanvasPainter::fillText(const QString &text, const QRectF &rect)
現在のtextAlignおよびtextBaselineを使用して、rect 内にtext 文字列を描画します。rectパラメータの幅がmaxWidthとして使用されます。
これは、QRectF を使用するオーバーロードされたメソッドです。このメソッドでテキストを描画する際、テキストのベースラインをTextBaseline::Top またはTextBaseline::Middle に設定すると便利な場合がよくあります。
![]() | |
これはオーバーロードされた関数です。
setTextAlign()、setTextBaseline()、およびsetTextWrapMode()も参照してください 。
void QCanvasPainter::fillText(const QString &text, QPointF point, qreal maxWidth = 0)
指定されたpoint に、現在のtextAlignおよびtextBaselineを使用して、text 文字列を描画します。テキストを複数行に折り返すには、setTextWrapMode() を使用して、テキストの折り返しモードをデフォルトのNoWrap 以外の値に設定してください。オプションのmaxWidth パラメータのデフォルト値は0 です。つまり、例えばWordWrap が設定されている場合、テキストは単語ごとに折り返されます。maxWidth パラメータを、希望する行幅(ピクセル単位)に設定します。
これは、QPointF を使用するオーバーロードされたメソッドです。
これはオーバーロードされた関数です。
setTextAlign()、setTextBaseline()、およびsetTextWrapMode()も参照してください 。
QTransform QCanvasPainter::getTransform() const
現在のトランスフォームを返します。
void QCanvasPainter::lineTo(qreal x, qreal y)
パスの最後の点から、(x,y) の点までの線分を追加します。
![]() | |
void QCanvasPainter::lineTo(QPointF point)
パスの最後の点からpoint までの線分を追加します。
これはオーバーロードされた関数です。
void QCanvasPainter::moveTo(qreal x, qreal y)
(x,y) を最初の点として、新しいサブパスを開始します。
void QCanvasPainter::moveTo(QPointF point)
point を最初の点として、新しいサブパスを開始します。
これはオーバーロードされた関数です。
void QCanvasPainter::quadraticCurveTo(qreal cpX, qreal cpY, qreal x, qreal y)
パスの最後の点から、制御点(cpX 、cpY )を経由して、指定された点(x 、y )に至る2次ベジエセグメントを追加します。
![]() | |
void QCanvasPainter::quadraticCurveTo(QPointF controlPoint, QPointF endPoint)
パスの最後の点から、controlPoint を経由して、指定されたendPoint までの2次ベジエセグメントを追加します。
これはオーバーロードされた関数です。
void QCanvasPainter::rect(qreal x, qreal y, qreal width, qreal height)
座標x 、y の位置に、サイズwidth 、height の新しい長方形のサブパスを作成します。
![]() | |
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 が不要になった場合や、例えばパスのコマンド数が以前より大幅に減少し、バッファサイズを縮小すべき場合など、メモリ使用量を削減するためにのみこのメソッドを使用してください。
void QCanvasPainter::reset()
現在のペインターの状態をデフォルト値にリセットします。
これには、ストロークおよび塗りつぶしのスタイルと関連するプロパティ、変換行列、クリッピング領域、テキスト関連の設定、合成プロパティ、描画状態スタック、アンチエイリアシング設定が含まれます。
注:この メソッドは、キャンバスバッファを視覚的にクリアしないという点で、HTML Canvas 2D コンテキストの reset() メソッドとは異なります。
注: setWindingEnforce() およびsetHighQualityStroking() の値は 変更されません。
![]() | |
save() およびrestore()も参照してください 。
void QCanvasPainter::resetClipping()
クリッピングをリセットし、無効にします。
setClipRect()も参照してください 。
void QCanvasPainter::resetTransform()
現在の変換を単位行列にリセットします。
void QCanvasPainter::restore()
現在のレンダリング状態をポップして復元します。これにより、以前に保存された状態が復元されます。save() が呼び出されておらず、状態スタックが空の場合、これを呼び出しても何もしません。
save()も参照してください 。
void QCanvasPainter::rotate(qreal angle)
現在の座標系をangle だけ時計回りに回転させます。
角度はラジアン単位で指定します。度からラジアンへの変換には、qDegreesToRadians() を使用してください。
![]() | |
void QCanvasPainter::roundRect(qreal x, qreal y, qreal width, qreal height, qreal radius)
座標x 、y の位置に、サイズwidth 、height の新しい角丸長方形のサブパスを作成します。角の丸み半径はradius になります。
![]() | |
void QCanvasPainter::roundRect(const QRectF &rect, qreal radius)
rect の位置に、radius の角を持つ新しい角丸長方形のサブパスを作成します。これは、QRectF を使用したオーバーロードされたメソッドです。
これはオーバーロードされた関数です。
void QCanvasPainter::roundRect(const QRectF &rect, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft)
rect で、角が丸い新しい長方形形状のサブパスを作成します。角の丸み具合は、radiusTopLeft 、radiusTopRight 、radiusBottomRight 、radiusBottomLeft のように、角ごとに異なる設定が可能です。
これはオーバーロードされた関数です。
void QCanvasPainter::roundRect(qreal x, qreal y, qreal width, qreal height, qreal radiusTopLeft, qreal radiusTopRight, qreal radiusBottomRight, qreal radiusBottomLeft)
位置x 、y に、サイズwidth 、height の新しい角丸長方形形状のサブパスを作成します。角の丸み具合は、radiusTopLeft 、radiusTopRight 、radiusBottomRight 、radiusBottomLeft のように、角ごとに異なる設定が可能です。
![]() | |
これはオーバーロードされた関数です。
void QCanvasPainter::save()
現在のレンダリング状態をステートスタックにプッシュして保存します。状態を復元するには、対応するrestore()を使用する必要があります。
![]() | |
restore()も参照してください 。
void QCanvasPainter::scale(qreal scale)
現在の座標系をscale の倍率で拡大・縮小します。x座標とy座標は均等に拡大・縮小されます。
![]() | |
void QCanvasPainter::scale(qreal scaleX, qreal scaleY)
現在の座標系を、scaleX およびscaleY によって拡大・縮小します。
これはオーバーロードされた関数です。
void QCanvasPainter::setAntialias(qreal antialias)
現在のアンチエイリアシングの量を、ピクセル単位でantialias に設定します。アンチエイリアシングの値が大きいほど、描画は滑らかになります。これは塗りや線の描画にのみ影響し、画像やテキストには影響しません。デフォルト値は1.0 で、最大値は10.0 です。
アンチエイリアシングはパスごとに変更できるため、各ストロークや塗りつぶしの前に設定することができます。アンチエイリアシングを無効にしてレンダリングコストを削減するには、アンチエイリアシングを0 に設定してください。
![]() | |
setTextAntialias()も参照してください 。
void QCanvasPainter::setClipRect(qreal x, qreal y, qreal width, qreal height)
現在のクリッピング矩形を (x,y,width,height) に設定します。クリッピング矩形は、現在のトランスフォームによって変形されます。
注:クリッピングには ある程度のパフォーマンス上のオーバーヘッドがあるため、必要な場合にのみ使用してください。
![]() | |
関連項目: resetClipping()。
void QCanvasPainter::setClipRect(const QRectF &rect)
現在のシザー矩形を `rect` に設定します。シザー矩形は、現在のトランスフォームによって変換されます。
注:クリッピングには ある程度のパフォーマンス上のオーバーヘッドがあるため、必要な場合にのみ使用してください。
これはオーバーロードされた関数です。
resetClipping()も参照してください 。
[since 6.12] void QCanvasPainter::setFillRule(QCanvasPainter::FillRule fillRule)
パス塗りつぶしルールを `fillRule` に設定します。この値は、ルールが設定された後のすべての `fill()` 呼び出しに適用されます。デフォルトの塗りつぶしルールはQCanvasPainter::FillRule::NonZero
![]() | |
この関数は Qt 6.12 で導入されました。
void QCanvasPainter::setFillStyle(QColor color)
塗りつぶしのスタイルをcolor に設定します。デフォルトの塗りつぶしスタイルは、黒一色(0, 0, 0, 1)です。
![]() | |
void QCanvasPainter::setFillStyle(const QCanvasBrush &brush)
塗りつぶしのスタイルを「brush 」に設定します。デフォルトの塗りつぶしスタイルは、黒の一色塗り(0, 0, 0, 1)です。
![]() | |
これはオーバーロードされた関数です。
void QCanvasPainter::setFont(const QFont &font)
font を現在アクティブなフォントとして設定します。
void QCanvasPainter::setGlobalAlpha(qreal alpha)
グローバルなアルファ(透明度)値をalpha に設定します。このアルファ値は、レンダリングされるすべての図形に適用されます。すでに透明なパスも、比例してさらに透明になります。アルファ値は0.0(完全に透明)から1.0(完全に不透明)の間で指定する必要があります。デフォルトのアルファ値は1.0 です。
![]() | |
void QCanvasPainter::setGlobalBrightness(qreal value)
グローバルな明るさをvalue に設定します。この明るさは、レンダリングされるすべての図形に適用されます。値を0に設定すると、描画は完全に黒になります。また、値を1.0より大きく設定することで、明るさを上げることができます。デフォルトの明るさは1.0 です。
![]() | |
void QCanvasPainter::setGlobalCompositeOperation(QCanvasPainter::CompositeOperation operation)
グローバルな合成モードを「operation 」に設定します。このモードは、すべての描画操作に適用されます。デフォルトのモードは「QCanvasPainter::CompositeOperation::SourceOver 」です。
注: コンポジットモードを正しく機能させるには 、alphaBlending を有効にし、キャンバスの背景を透明にする必要があります。
![]() | |
void QCanvasPainter::setGlobalContrast(qreal value)
グローバルなコントラストをvalue に設定します。このコントラストは、レンダリングされるすべての図形に適用されます。値を0に設定すると、描画結果は完全に灰色(0.5, 0.5, 0.5)になります。コントラストを高めるために、値を1.0より大きくすることも可能です。デフォルトでは、コントラストは1.0 に設定されています。
![]() | |
void QCanvasPainter::setGlobalSaturation(qreal value)
グローバルな彩度をvalue に設定します。この彩度は、レンダリングされるすべての図形に適用されます。値を0にすると彩度が無効になり、描画は完全にグレースケールになります。彩度を高めるために、値を1.0より大きくすることもできます。デフォルトの彩度は1.0 です。
![]() | |
void QCanvasPainter::setHighQualityStroking(bool enabled)
高品質なストロークをenabled に設定します。これをtrue に設定すると、ストロークが重なり合い、不透明度が完全ではないといった、あまり一般的ではないケースにおいて、より正確なレンダリングが行われます。これを有効にすると、レンダリングコストが高くなります。デフォルト値はfalse です。
![]() | |
void QCanvasPainter::setLineCap(QCanvasPainter::LineCap cap)
ストロークの線の終端を「cap 」に設定します。デフォルトの線の端は「QCanvasPainter::LineCap::Butt 」です。
![]() | |
void QCanvasPainter::setLineJoin(QCanvasPainter::LineJoin join)
ストロークの線接合を「join 」に設定します。デフォルトの線接合は「QCanvasPainter::LineJoin::Miter 」です。
![]() | |
setMiterLimit()も参照してください 。
void QCanvasPainter::setLineWidth(qreal width)
ストロークの線幅をwidth ピクセルに設定します。デフォルトの線幅は1.0 です。アンチエイリアシングが有効になっている場合、1ピクセルより細い線幅では不透明度が自動的にフェードされ、滑らかな出力が得られます。
![]() | |
stroke()も参照してください 。
void QCanvasPainter::setMiterLimit(qreal limit)
マイター制限をlimit に設定します。マイター制限は、鋭角な角がいつ面取りされるかを制御します。角の長さがこの制限値を超える場合、代わりに線と線の間にQCanvasPainter::LineJoin::Bevel が適用されます。これは、QCanvasPainter::LineJoin::Miter の線接続方式でのみ有効です。デフォルトの制限値は10.0 です。
![]() | |
setLineJoin()も参照してください 。
void QCanvasPainter::setPathWinding(QCanvasPainter::PathWinding winding)
現在のサブパス「winding 」を「CounterClockWise 」(デフォルト)または「ClockWise 」のいずれかに設定します。「CounterClockWise 」は実線のサブパスを描画し、「ClockWise 」は穴を描画します。
![]() | |
beginHoleSubPath() およびbeginSolidSubPath()も参照してください 。
void QCanvasPainter::setStrokeStyle(QColor color)
ストロークのスタイルをcolor の塗りつぶしに設定します。デフォルトのストロークスタイルは、黒(0, 0, 0, 1)の塗りつぶしです。
![]() | |
void QCanvasPainter::setStrokeStyle(const QCanvasBrush &brush)
ストロークのスタイルをbrush に設定します。デフォルトのストロークスタイルは、黒の実線 (0, 0, 0, 1) です。
![]() | |
これはオーバーロードされた関数です。
void QCanvasPainter::setTextAlign(QCanvasPainter::TextAlign align)
テキストの水平方向の配置をalign に設定します。デフォルトの配置はQCanvasPainter::TextAlign::Start です。
![]() | |
setTextBaseline()も参照してください 。
void QCanvasPainter::setTextAntialias(qreal antialias)
現在のテキストのアンチエイリアシング量を設定します。値「antialias 」は通常のアンチエイリアシングに対する倍率を表しており、つまり「0.0 」はアンチエイリアシングを無効にし、「2.0」はアンチエイリアシング効果を2倍にします。デフォルト値は1.0です。
注: 使用されているテキストアンチエイリアシング技術(SDF)の性質上 、アンチエイリアシングの最大量はかなり制限されており、フォントサイズが小さいほどその影響は小さくなります。
![]() | |
void QCanvasPainter::setTextBaseline(QCanvasPainter::TextBaseline baseline)
テキストの垂直方向の配置(ベースライン)をbaseline に設定します。デフォルトの配置はQCanvasPainter::TextBaseline::Alphabetic です。
![]() | |
setTextAlign()も参照してください 。
void QCanvasPainter::setTextDirection(QCanvasPainter::TextDirection direction)
テキストの方向をdirection に設定します。デフォルトの方向はQCanvasPainter::TextDirection::Inherit です。
![]() | |
void QCanvasPainter::setTextLineHeight(qreal height)
改行されるテキストの行高さを、ピクセル単位でheight に設定します。デフォルトの行高さは0 です。
![]() | |
void QCanvasPainter::setTextWrapMode(QCanvasPainter::WrapMode wrapMode)
テキストの折り返しモードを「wrapMode 」に設定します。デフォルトの折り返しモードは「QCanvasPainter::WrapMode::NoWrap 」です。
![]() | |
void QCanvasPainter::setTransform(const QTransform &transform)
現在の変換をリセットし、代わりにtransform を使用します。
![]() | |
transform()も参照してください 。
void QCanvasPainter::setWindingEnforce(bool enabled)
ワインディングの強制設定をenabled に設定します。これをfalse に設定すると、setPathWinding()で設定された内容に合わせてパスのワインディングを強制する機能が無効になります。この機能を無効にすると、例えば、点を時計回りの順序で追加することでパスに穴を開けることが可能になります。また、無効にすることでパフォーマンスが向上する場合もあります。デフォルト値はtrue です。
![]() | |
void QCanvasPainter::skew(qreal angleX, qreal angleY = 0.0)
現在の座標系を、X軸方向にangleX 、Y軸方向にangleY だけ傾斜(せん断)させます。角度はラジアン単位で指定します。
![]() | |
void QCanvasPainter::stroke()
現在のストロークスタイルで、現在のパスを描画します。
![]() | |
setStrokeStyle()も参照してください 。
void QCanvasPainter::stroke(const QCanvasPath &path, int pathGroup = -1)
path に対して、現在の描画スタイルで描画を行い、pathGroup に格納します。QCanvasPath による描画は、パスに含まれるコマンドが多く、かつその大部分が静的な場合に最適です。
pathGroup が-1 の場合、パスのレンダリング関連データはキャッシュされません。これがデフォルトの設定です。パスデータのキャッシュを要求するには、0 以上の値を指定してください。パスキャッシュグループの使用に関する詳細については、QCanvasPath のドキュメントを参照してください。
このメソッドを呼び出す前にbeginPath() を呼び出す必要はありません。
![]() | |
これはオーバーロードされた関数です。
setStrokeStyle() およびremovePathGroup()も参照してください 。
void QCanvasPainter::strokeRect(qreal x, qreal y, qreal width, qreal height)
指定された位置(x 、y )に、サイズwidth 、height の線画付き矩形を描画します。
注:これは 利便性を考慮して提供されています。複数の矩形にストロークを適用する場合は、rect() を使用することを推奨します。
![]() | |
void QCanvasPainter::strokeRect(const QRectF &rect)
rect に線画の矩形を描画します。これは、QRectF を使用したオーバーロードされたメソッドです。
注:これは 利便性のために提供されています。複数の矩形にストロークを適用する場合は、rect() を使用することを推奨します。
これはオーバーロードされた関数です。
QRectF QCanvasPainter::textBoundingBox(const QString &text, qreal x, qreal y, qreal maxWidth = 0) const
(x,y) における `text ` 文字列のバウンディングボックスを測定します。
複数行のテキストを測定するには、setTextWrapMode() を使用して、テキストの折り返しモードをデフォルトの `NoWrap` 以外の値に設定してください。また、オプションの `maxWidth ` パラメータを、希望する行幅(ピクセル単位)に設定してください。
QRectF を [xmin, ymin, width, height] の値で返します。測定値はローカル座標系で返されます。
![]() | |
QRectF QCanvasPainter::textBoundingBox(const QString &text, const QRectF &rect) const
rect にある `text ` 文字列のバウンディングボックスを測定します。値 [xmin, ymin, width, height] を含む `QRectF ` を返します。測定値はローカル座標系で返されます。
これはオーバーロードされた関数です。
QRectF QCanvasPainter::textBoundingBox(const QString &text, QPointF point, qreal maxWidth = 0) const
point にある「text 」文字列のバウンディングボックスを測定します。
複数行のテキストを測定するには、setTextWrapMode() を使用して、テキストの折り返しモードをデフォルトのNoWrap 以外の値に設定してください。また、オプションのmaxWidth パラメータを、希望する行幅(ピクセル単位)に設定してください。
QRectF を、値 [xmin, ymin, width, height] として返します。測定値はローカル座標系で返されます。
これはオーバーロードされた関数です。
void QCanvasPainter::transform(const QTransform &transform)
現在の座標系に、指定されたtransform を乗算します。
![]() | |
setTransform()も参照してください 。
void QCanvasPainter::translate(qreal x, qreal y)
現在の座標系を、x およびy によって変換します。
![]() | |
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.































































