QPainter Class
QPainter クラスは、ウィジェットやその他の描画デバイスに対して低レベルの描画処理を行います。詳細...
| ヘッダー: | #include <QPainter> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 継承元: |
- 継承されたメンバーを含むすべてのメンバーの一覧
- QPainter はPainting クラスの一部です。
注:このクラスのすべての関数は再入可能である。
パブリック型
| class | PixmapFragment |
| enum | CompositionMode { CompositionMode_SourceOver, CompositionMode_DestinationOver, CompositionMode_Clear, CompositionMode_Source, CompositionMode_Destination, …, RasterOp_SourceOrNotDestination } |
| enum | PixmapFragmentHint { OpaqueHint } |
| flags | PixmapFragmentHints |
| enum | RenderHint { Antialiasing, TextAntialiasing, SmoothPixmapTransform, VerticalSubpixelPositioning, LosslessImageRendering, NonCosmeticBrushPatterns } |
| flags | RenderHints |
パブリック関数
| QPainter() | |
| QPainter(QPaintDevice*device) | |
| ~QPainter() | |
| const QBrush & | background() const |
| Qt::BGMode | backgroundMode() const |
| bool | begin(QPaintDevice*device) |
| void | beginNativePainting() |
| QRectF | boundingRect(const QRectF&rectangle, intflags, const QString&text) |
| QRect | boundingRect(const QRect&rectangle, intflags, const QString&text) |
| QRectF | boundingRect(const QRectF&rectangle, const QString&text, const QTextOption&option= QTextOption()) |
| QRect | boundingRect(intx, inty, intw, inth, intflags, const QString&text) |
| const QBrush & | brush() const |
| QPoint | brushOrigin() const |
(since 6.11) QPointF | brushOriginF() const |
| QRectF | clipBoundingRect() const |
| QPainterPath | clipPath() const |
| QRegion | clipRegion() const |
| QTransform | combinedTransform() const |
| QPainter::CompositionMode | compositionMode() const |
| QPaintDevice * | device() const |
| const QTransform & | deviceTransform() const |
| void | drawArc(const QRectF&rectangle, intstartAngle, intspanAngle) |
| void | drawArc(const QRect&rectangle, intstartAngle, intspanAngle) |
| void | drawArc(intx, inty, intwidth, intheight, intstartAngle, intspanAngle) |
| void | drawChord(const QRectF&rectangle, intstartAngle, intspanAngle) |
| void | drawChord(const QRect&rectangle, intstartAngle, intspanAngle) |
| void | drawChord(intx, inty, intwidth, intheight, intstartAngle, intspanAngle) |
| void | drawConvexPolygon(const QPointF*points, intpointCount) |
| void | drawConvexPolygon(const QPolygon&polygon) |
| void | drawConvexPolygon(const QPolygonF&polygon) |
| void | drawConvexPolygon(const QPoint*points, intpointCount) |
| void | drawEllipse(const QRectF&rectangle) |
| void | drawEllipse(const QRect&rectangle) |
| void | drawEllipse(const QPoint¢er, intrx, intry) |
| void | drawEllipse(const QPointF¢er, qrealrx, qrealry) |
| void | drawEllipse(intx, inty, intwidth, intheight) |
| void | drawGlyphRun(const QPointF&position, const QGlyphRun&glyphs) |
| void | drawImage(const QRectF&target, const QImage&image, const QRectF&source, Qt::ImageConversionFlagsflags= Qt::AutoColor) |
| void | drawImage(const QPoint&point, const QImage&image) |
| void | drawImage(const QPointF&point, const QImage&image) |
| void | drawImage(const QRect&rectangle, const QImage&image) |
| void | drawImage(const QRectF&rectangle, const QImage&image) |
| void | drawImage(const QPoint&point, const QImage&image, const QRect&source, Qt::ImageConversionFlagsflags= Qt::AutoColor) |
| void | drawImage(const QPointF&point, const QImage&image, const QRectF&source, Qt::ImageConversionFlagsflags= Qt::AutoColor) |
| void | drawImage(const QRect&target, const QImage&image, const QRect&source, Qt::ImageConversionFlagsflags= Qt::AutoColor) |
| void | drawImage(intx, inty, const QImage&image, intsx= 0, intsy= 0, intsw= -1, intsh= -1, Qt::ImageConversionFlagsflags= Qt::AutoColor) |
| void | drawLine(const QLineF&line) |
| void | drawLine(const QLine&line) |
| void | drawLine(const QPoint&p1, const QPoint&p2) |
| void | drawLine(const QPointF&p1, const QPointF&p2) |
| void | drawLine(intx1, inty1, intx2, inty2) |
| void | drawLines(const QLineF*lines, intlineCount) |
| void | drawLines(const QList<QLine>&lines) |
| void | drawLines(const QList<QLineF>&lines) |
| void | drawLines(const QList<QPoint>&pointPairs) |
| void | drawLines(const QList<QPointF>&pointPairs) |
| void | drawLines(const QLine*lines, intlineCount) |
| void | drawLines(const QPoint*pointPairs, intlineCount) |
| void | drawLines(const QPointF*pointPairs, intlineCount) |
| void | drawPath(const QPainterPath&path) |
| void | drawPicture(const QPointF&point, const QPicture&picture) |
| void | drawPicture(const QPoint&point, const QPicture&picture) |
| void | drawPicture(intx, inty, const QPicture&picture) |
| void | drawPie(const QRectF&rectangle, intstartAngle, intspanAngle) |
| void | drawPie(const QRect&rectangle, intstartAngle, intspanAngle) |
| void | drawPie(intx, inty, intwidth, intheight, intstartAngle, intspanAngle) |
| void | drawPixmap(const QRectF&target, const QPixmap&pixmap, const QRectF&source) |
| void | drawPixmap(const QPoint&point, const QPixmap&pixmap) |
| void | drawPixmap(const QPointF&point, const QPixmap&pixmap) |
| void | drawPixmap(const QRect&rectangle, const QPixmap&pixmap) |
| void | drawPixmap(const QPoint&point, const QPixmap&pixmap, const QRect&source) |
| void | drawPixmap(const QPointF&point, const QPixmap&pixmap, const QRectF&source) |
| void | drawPixmap(const QRect&target, const QPixmap&pixmap, const QRect&source) |
| void | drawPixmap(intx, inty, const QPixmap&pixmap) |
| void | drawPixmap(intx, inty, intwidth, intheight, const QPixmap&pixmap) |
| void | drawPixmap(intx, inty, const QPixmap&pixmap, intsx, intsy, intsw, intsh) |
| void | drawPixmap(intx, inty, intw, inth, const QPixmap&pixmap, intsx, intsy, intsw, intsh) |
| void | drawPixmapFragments(const QPainter::PixmapFragment*fragments, intfragmentCount, const QPixmap&pixmap, QPainter::PixmapFragmentHintshints= PixmapFragmentHints()) |
| void | drawPoint(const QPointF&position) |
| void | drawPoint(const QPoint&position) |
| void | drawPoint(intx, inty) |
| void | drawPoints(const QPointF*points, intpointCount) |
| void | drawPoints(const QPolygon&points) |
| void | drawPoints(const QPolygonF&points) |
| void | drawPoints(const QPoint*points, intpointCount) |
| void | drawPolygon(const QPointF*points, intpointCount, Qt::FillRulefillRule= Qt::OddEvenFill) |
| void | drawPolygon(const QPolygon&points, Qt::FillRulefillRule= Qt::OddEvenFill) |
| void | drawPolygon(const QPolygonF&points, Qt::FillRulefillRule= Qt::OddEvenFill) |
| void | drawPolygon(const QPoint*points, intpointCount, Qt::FillRulefillRule= Qt::OddEvenFill) |
| void | drawPolyline(const QPointF*points, intpointCount) |
| void | drawPolyline(const QPolygon&points) |
| void | drawPolyline(const QPolygonF&points) |
| void | drawPolyline(const QPoint*points, intpointCount) |
| void | drawRect(const QRectF&rectangle) |
| void | drawRect(const QRect&rectangle) |
| void | drawRect(intx, inty, intwidth, intheight) |
| void | drawRects(const QRectF*rectangles, intrectCount) |
| void | drawRects(const QList<QRect>&rectangles) |
| void | drawRects(const QList<QRectF>&rectangles) |
| void | drawRects(const QRect*rectangles, intrectCount) |
| void | drawRoundedRect(const QRectF&rect, qrealxRadius, qrealyRadius, Qt::SizeModemode= Qt::AbsoluteSize) |
| void | drawRoundedRect(const QRect&rect, qrealxRadius, qrealyRadius, Qt::SizeModemode= Qt::AbsoluteSize) |
| void | drawRoundedRect(intx, inty, intw, inth, qrealxRadius, qrealyRadius, Qt::SizeModemode= Qt::AbsoluteSize) |
| void | drawStaticText(const QPointF&topLeftPosition, const QStaticText&staticText) |
| void | drawStaticText(const QPoint&topLeftPosition, const QStaticText&staticText) |
| void | drawStaticText(intleft, inttop, const QStaticText&staticText) |
| void | drawText(const QPointF&position, const QString&text) |
| void | drawText(const QPoint&position, const QString&text) |
| void | drawText(const QRectF&rectangle, const QString&text, const QTextOption&option= QTextOption()) |
| void | drawText(intx, inty, const QString&text) |
| void | drawText(const QRect&rectangle, intflags, const QString&text, QRect*boundingRect= nullptr) |
| void | drawText(const QRectF&rectangle, intflags, const QString&text, QRectF*boundingRect= nullptr) |
| void | drawText(intx, inty, intwidth, intheight, intflags, const QString&text, QRect*boundingRect= nullptr) |
| void | drawTiledPixmap(const QRectF&rectangle, const QPixmap&pixmap, const QPointF&position= QPointF()) |
| void | drawTiledPixmap(const QRect&rectangle, const QPixmap&pixmap, const QPoint&position= QPoint()) |
| void | drawTiledPixmap(intx, inty, intwidth, intheight, const QPixmap&pixmap, intsx= 0, intsy= 0) |
| bool | end() |
| void | endNativePainting() |
| void | eraseRect(const QRectF&rectangle) |
| void | eraseRect(const QRect&rectangle) |
| void | eraseRect(intx, inty, intwidth, intheight) |
| void | fillPath(const QPainterPath&path, const QBrush&brush) |
| void | fillRect(const QRectF&rectangle, const QBrush&brush) |
| void | fillRect(const QRect&rectangle, QGradient::Presetpreset) |
| void | fillRect(const QRect&rectangle, Qt::BrushStylestyle) |
| void | fillRect(const QRect&rectangle, Qt::GlobalColorcolor) |
| void | fillRect(const QRect&rectangle, const QBrush&brush) |
| void | fillRect(const QRect&rectangle, const QColor&color) |
| void | fillRect(const QRectF&rectangle, QGradient::Presetpreset) |
| void | fillRect(const QRectF&rectangle, Qt::BrushStylestyle) |
| void | fillRect(const QRectF&rectangle, Qt::GlobalColorcolor) |
| void | fillRect(const QRectF&rectangle, const QColor&color) |
| void | fillRect(intx, inty, intwidth, intheight, QGradient::Presetpreset) |
| void | fillRect(intx, inty, intwidth, intheight, Qt::BrushStylestyle) |
| void | fillRect(intx, inty, intwidth, intheight, Qt::GlobalColorcolor) |
| void | fillRect(intx, inty, intwidth, intheight, const QBrush&brush) |
| void | fillRect(intx, inty, intwidth, intheight, const QColor&color) |
| const QFont & | font() const |
| QFontInfo | fontInfo() const |
| QFontMetrics | fontMetrics() const |
| bool | hasClipping() const |
| bool | isActive() const |
| Qt::LayoutDirection | layoutDirection() const |
| qreal | opacity() const |
| QPaintEngine * | paintEngine() const |
| const QPen & | pen() const |
| QPainter::RenderHints | renderHints() const |
| void | resetTransform() |
| void | restore() |
| void | rotate(qrealangle) |
| void | save() |
| void | scale(qrealsx, qrealsy) |
| void | setBackground(const QBrush&brush) |
| void | setBackgroundMode(Qt::BGModemode) |
| void | setBrush(const QBrush&brush) |
(since 6.11) void | setBrush(QBrush&&brush) |
(since 6.9) void | setBrush(QColorcolor) |
| void | setBrush(Qt::BrushStylestyle) |
(since 6.9) void | setBrush(Qt::GlobalColorcolor) |
| void | setBrushOrigin(const QPointF&position) |
| void | setBrushOrigin(const QPoint&position) |
| void | setBrushOrigin(intx, inty) |
| void | setClipPath(const QPainterPath&path, Qt::ClipOperationoperation= Qt::ReplaceClip) |
| void | setClipRect(const QRectF&rectangle, Qt::ClipOperationoperation= Qt::ReplaceClip) |
| void | setClipRect(intx, inty, intwidth, intheight, Qt::ClipOperationoperation= Qt::ReplaceClip) |
| void | setClipRect(const QRect&rectangle, Qt::ClipOperationoperation= Qt::ReplaceClip) |
| void | setClipRegion(const QRegion®ion, Qt::ClipOperationoperation= Qt::ReplaceClip) |
| void | setClipping(boolenable) |
| void | setCompositionMode(QPainter::CompositionModemode) |
| void | setFont(const QFont&font) |
| void | setLayoutDirection(Qt::LayoutDirectiondirection) |
| void | setOpacity(qrealopacity) |
| void | setPen(const QPen&pen) |
(since 6.11) void | setPen(QPen&&pen) |
| void | setPen(Qt::PenStylestyle) |
| void | setPen(const QColor&color) |
| void | setRenderHint(QPainter::RenderHinthint, boolon= true) |
| void | setRenderHints(QPainter::RenderHintshints, boolon= true) |
| void | setTransform(const QTransform&transform, boolcombine= false) |
| void | setViewTransformEnabled(boolenable) |
| void | setViewport(const QRect&rectangle) |
| void | setViewport(intx, inty, intwidth, intheight) |
| void | setWindow(const QRect&rectangle) |
| void | setWindow(intx, inty, intwidth, intheight) |
| void | setWorldMatrixEnabled(boolenable) |
| void | setWorldTransform(const QTransform&matrix, boolcombine= false) |
| void | shear(qrealsh, qrealsv) |
| void | strokePath(const QPainterPath&path, const QPen&pen) |
| bool | testRenderHint(QPainter::RenderHinthint) const |
| const QTransform & | transform() const |
| void | translate(const QPointF&offset) |
| void | translate(const QPoint&offset) |
| void | translate(qrealdx, qrealdy) |
| bool | viewTransformEnabled() const |
| QRect | viewport() const |
| QRect | window() const |
| bool | worldMatrixEnabled() const |
| const QTransform & | worldTransform() const |
詳細な説明
QPainter は、GUI プログラムで必要とされる描画の大部分を実行するための、高度に最適化された関数を提供します。単純な線から、円弧や弦のような複雑な形状まで、あらゆるものを描画できます。また、整列されたテキストやピクマップの描画も可能です。通常は「自然な」座標系で描画しますが、ビュー変換やワールド変換を行うこともできます。 QPainterは、QPaintDevice クラスを継承するあらゆるオブジェクトに対して操作を行うことができます。
QPainterの一般的な使用法は、ウィジェットのpaintイベント内です。ペインターを構築し、カスタマイズ(例:ペンやブラシの設定)してから、描画を行います。描画後は、QPainterオブジェクトを破棄することを忘れないでください。例:
void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(Qt::blue);
painter.setFont(QFont("Arial", 30));
painter.drawText(rect(), Qt::AlignCenter, "Qt");
}QPainterの中核となる機能は描画ですが、このクラスはQPainterの設定やレンダリング品質をカスタマイズできるいくつかの関数や、クリッピングを有効にする関数も提供しています。さらに、ペインターの合成モードを指定することで、異なる形状の合成方法を制御することもできます。
isActive() 関数は、ペインターがアクティブであるかどうかを示します。ペインターは、begin() 関数およびQPaintDevice 引数を取るコンストラクタによってアクティブ化されます。end() 関数およびデストラクタによって、ペインターは非アクティブ化されます。
QPaintDevice およびQPaintEngine クラスと併せて、QPainterはQtの描画システムの基盤を形成しています。QPainterは、描画操作を実行するために使用されるクラスです。QPaintDevice は、QPainterを使用して描画できるデバイスを表します。QPaintEngine は、ペインターがさまざまな種類のデバイスに描画するために使用するインターフェースを提供します。 ペインターがアクティブな場合、device() はペインターが描画を行う描画デバイスを返し、paintEngine() はペインターが現在動作している描画エンジンを返します。詳細については、「ペイントシステム」を参照してください。
場合によっては、通常とは異なるQPaintDevice 上で他のオブジェクトに描画させたいことがあります。QPainter には、これを行うための静的関数 setRedirected() が用意されています。
警告: ペイントデバイスがウィジェットである場合 、QPainter は paintEvent() 関数内、または paintEvent() によって呼び出される関数内でのみ使用できます。
設定
QPainter が好みに合わせて描画を行うよう、カスタマイズできる設定がいくつかあります:
- font() は、テキストの描画に使用されるフォントです。ペインターがisActive() の場合、fontInfo() およびfontMetrics() 関数をそれぞれ使用して、現在設定されているフォントとそのメトリックに関する情報を取得できます。
- brush() は、図形の塗りつぶしに使用される色またはパターンを定義します。
- pen() は、線や境界線の描画に使用される色または点描を定義します。
- backgroundMode() は、background() があるかどうか、つまりQt::OpaqueMode またはQt::TransparentMode のいずれかを定義します。
- background() は、backgroundMode() がQt::OpaqueMode で、pen() が点描である場合にのみ適用されます。その場合、点描の背景ピクセルの色を指定します。
- brushOrigin() は、タイル化されたブラシの原点を定義します。通常、これはウィジェットの背景の原点となります。
- viewport()、window()、worldTransform() は、ペインターの座標変換系を構成します。詳細については、「Coordinate Transformations 」セクションおよび「座標系」のドキュメントを参照してください。
- hasClipping() は、ペインターがクリッピングを行うかどうかを指定します(ペイントデバイスもクリッピングを行います)。ペインターがクリッピングを行う場合、clipRegion() に基づいてクリッピングが行われます。
- layoutDirection() は、ペインターがテキストを描画する際に使用するレイアウト方向を定義します。
- worldMatrixEnabled() は、ワールド変換が有効かどうかを示します。
- viewTransformEnabled() は、ビュー変換が有効かどうかを示します。
これらの設定の一部は、QWidget::font() など、一部のペイントデバイスの設定を反映していることに注意してください。QPainter::begin() 関数(または同等の QPainter コンストラクタ)は、これらの属性をペイントデバイスからコピーします。
save() 関数を呼び出すことで、QPainter の状態をいつでも保存できます。この関数は、利用可能なすべての設定を内部スタックに保存します。restore() 関数は、それらをスタックから取り出します。
描画
QPainter は、ほとんどのプリミティブを描画するための関数を提供しています。drawPoint()、drawPoints()、drawLine()、drawRect()、drawRoundedRect()、drawEllipse()、drawArc()、drawPie()、drawChord()、drawPolyline()、drawPolygon()、drawConvexPolygon()、および drawCubicBezier() です。 2 つの便利関数、drawRects() およびdrawLines() は、現在のペンとブラシを使用して、指定されたQRects またはQLines の配列内の指定された数の長方形または線を描画します。
QPainter クラスは、指定されたQRect を指定されたQBrush で塗りつぶすfillRect()関数や、指定された矩形内の領域を消去するeraseRect()関数も提供しています。
これらの関数はすべて、整数型と浮動小数点型の両方のバージョンがあります。
![]() | 基本的な描画の例 「基本的な描画」の例では、QPainter クラスを使用して、基本的なグラフィックプリミティブをさまざまなスタイルで表示する方法を示しています。 |
複雑な形状を描画する必要がある場合、特にそれを繰り返し行う必要がある場合は、QPainterPath を作成し、drawPath() を使用して描画することを検討してください。
| Painter Paths の例 QPainterPath クラスは、描画操作のためのコンテナを提供し、グラフィカルな形状の構築と再利用を可能にします。 「Painter Paths」の例では、ペインターパスを使用してレンダリング用の複雑な図形を構築する方法を示しています。 | ![]() |
QPainter は、指定された `QPainterPath ` を指定された `QBrush` で塗りつぶす `fillPath()` 関数や、指定されたパスの輪郭を描画する(つまり、パスにストロークを適用する)`strokePath()` 関数も提供しています。
また、高度なベクトル技術を使用してQPainterPath でテキストを描画する方法を示す「ベクトル変形」の例、Qtで利用可能なさまざまな種類のグラデーションを示す「グラデーション」の例、およびQtに組み込まれているダッシュパターンを示し、カスタムパターンを使用して利用可能なパターンの範囲を拡張する方法を示す「パスのストローク」の例も参照してください。
テキストの描画は、drawText() を使用して行われます。きめ細かな位置指定が必要な場合は、boundingRect() を使用すると、指定されたdrawText() コマンドがどこに描画されるかがわかります。
ピクマップおよび画像の描画
ピクマップや画像を描画するための関数として、drawPixmap()、drawImage()、drawTiledPixmap() があります。drawPixmap() とdrawImage() は、drawPixmap() が画面上では高速であるのに対し、drawImage() はQPrinter やその他のデバイスでは高速になる可能性がある点を除き、同じ結果を生成します。
drawPicture() 関数は、QPicture 全体のコンテンツを描画します。drawPicture() 関数は、QPicture が独自の設定を持っているため、ペインターの設定をすべて無視する唯一の関数です。
高解像度のピクマップおよび画像の描画
ピクマップの高解像度バージョンは、デバイスピクセル比の値が 1 より大きくなります(QImageReader 、QPixmap::devicePixelRatio() を参照)。その値が基となるQPaintDevice の値と一致する場合、追加の変換を適用することなく、デバイス上に直接描画されます。
これは、例えば、デバイス・ピクセル比が 2 の 64x64 ピクセルサイズのQPixmap を、同じくデバイス・ピクセル比が 2 の高 DPI 画面に描画する場合が該当します。 この場合、ピクマップはユーザースペース上では実質的に 32x32 ピクセルになることに注意してください。Qt 内でピクマップのサイズに基づいてレイアウトのジオメトリを計算するコードパスは、このサイズを使用します。この結果、ピクマップは大きなピクマップとしてではなく、高 DPI ピクマップとして表示されます。
レンダリング品質
QPainterを使用して最適なレンダリング結果を得るには、プラットフォーム非依存のQImage をペイントデバイスとして使用する必要があります。つまり、QImage を使用することで、どのプラットフォームでも結果のピクセル表現が同一になることが保証されます。
QPainter クラスは、RenderHint 列挙型と浮動小数点精度のサポートを通じて、レンダリング品質を制御する手段も提供しています。プリミティブを描画するためのすべての関数には、浮動小数点バージョンのものがあります。
painter.drawEllipse(QRectF(-diameter / 2.0, -diameter / 2.0, diameter, diameter));これらは、QPainter::Antialiasing というレンダリングヒントと組み合わせて使用されることがよくあります。
| int型とfloat型を用いた同心円を、アンチエイリアス処理の有無で比較します。浮動小数点精度のバージョンを使用すると、等間隔のリングが生成されます。アンチエイリアス処理を行うと、滑らかな円が得られます。 | ![]() |
RenderHint 列挙型は、QPainterに対するフラグを指定するもので、特定のエンジンによってその指定が反映される場合とされない場合があります。QPainter::Antialiasing は、可能であればプリミティブのエッジにアンチエイリアス処理を適用すべきであることを示し、QPainter::TextAntialiasing は、可能であればテキストにアンチエイリアス処理を適用すべきであることを示し、QPainter::SmoothPixmapTransform は、エンジンが滑らかなピクマップ変換アルゴリズムを使用すべきであることを示します。
renderHints() 関数は、このペインターに設定されているレンダリングヒントを指定するフラグを返します。setRenderHint() 関数を使用すると、現在設定されているRenderHints を設定またはクリアできます。
座標変換
通常、QPainter はデバイス独自の座標系(通常はピクセル)で動作しますが、QPainter は座標変換を十分にサポートしています。
最も一般的に使用される変換には、拡大縮小、回転、並進、せん断があります。座標系を指定されたオフセット分だけ拡大縮小するには `scale()` 関数を、時計回りに回転させるには `rotate()` 関数を、並進させる(つまり、点に指定されたオフセットを加える)には `translate()` 関数を使用します。 また、shear() 関数を使用して、原点を中心に座標系をねじることができます。せん断された座標系の可視化については、「アフィン変換」の例を参照してください。
また、「変換」の例では、変換が QPainter によるグラフィックプリミティブの描画にどのように影響するかを示しています。特に、変換の順序が結果にどのような影響を与えるかが示されています。
| アフィン変換の例 「アフィン変換」の例では、Qt が描画操作に対してアフィン変換を実行できる機能を紹介しています。このデモでは、ユーザーが変換操作を試して、その結果を即座に確認することもできます。 | ![]() |
すべての変換操作は、変換行列 `worldTransform()` に対して行われます。行列は、平面上のある点を別の点に変換します。変換行列の詳細については、「座標系」および「QTransform 」のドキュメントを参照してください。
setWorldTransform() 関数は、現在設定されているworldTransform() を置き換えるか、それに追加することができます。resetTransform() 関数は、translate()、scale()、shear()、rotate()、setWorldTransform()、setViewport()、およびsetWindow() 関数を使用して行われた変換をすべてリセットします。deviceTransform() は、論理座標からプラットフォーム依存の描画デバイスのデバイス座標へ変換する行列を返します。 後者の関数は、プラットフォーム依存のハンドル上でプラットフォームの描画コマンドを使用する場合にのみ必要となり、そのプラットフォームがネイティブに変換を行わない場合に限定されます。
QPainter を使用して描画する場合、論理座標を使用して点を指定し、それがペイントデバイスの物理座標に変換されます。 論理座標から物理座標へのマッピングは、QPainter の `combinedTransform()` によって処理されます。これは、`viewport()`、`window()`、および `worldTransform()` を組み合わせたものです。`viewport()` は、任意の長方形を指定する物理座標を表し、`window()` は、その同じ長方形を論理座標で記述し、`worldTransform()` は変換行列と同一です。
「座標系」も参照してください。
クリッピング
QPainter は、任意の描画操作を矩形、領域、またはベクトルパスにクリッピングすることができます。 現在のクリッピングは、clipRegion() およびclipPath() 関数を使用して取得できます。パスと領域のどちらが優先されるか(処理が速いか)は、基盤となるpaintEngine() に依存します。例えば、QImage ペイントエンジンはパスを優先しますが、X11ペイントエンジンは領域を優先します。クリッピングの設定は、ペインターの論理座標で行われます。
QPainterによるクリッピングの後、ペイントデバイス側でもクリッピングが行われる場合があります。たとえば、ほとんどのウィジェットは子ウィジェットが使用するピクセルをクリップし、ほとんどのプリンタは用紙の端付近の領域をクリップします。この追加のクリッピングは、clipRegion() やhasClipping() の戻り値には反映されません。
合成モード
QPainter は、デジタル画像の合成に関するポーター・ダフの法則を定義する `CompositionMode ` 列挙型を提供しています。これは、ある画像(ソース)のピクセルと、別の画像(デスティネーション)のピクセルを合成するためのモデルを記述したものです。
最も一般的な合成モードは、Source とSourceOver の2つです。Source は、不透明なオブジェクトをペイントデバイス上に描画するために使用されます。このモードでは、ソースの各ピクセルが、デスティネーションの対応するピクセルと置き換えられます。SourceOver 合成モードでは、ソースオブジェクトは透明であり、デスティネーションの上に描画されます。
なお、合成変換はピクセル単位で実行されることに注意してください。 そのため、グラフィックプリミティブ自体を使用する場合と、そのバウンディング矩形を使用する場合では違いがあります。バウンディング矩形には、alpha == 0 のピクセル(つまり、プリミティブを囲むピクセル)が含まれます。これらのピクセルは他の画像のピクセルを上書きし、事実上それらを消去しますが、プリミティブ自体は自身の領域のみを上書きします。
![]() | 合成モードの例 Qtのexamplesディレクトリにある「Composition Modes」の例では、さまざまな合成モードを試して、その結果を即座に確認することができます。 |
制限事項
Qtのラスタベースのペイントエンジンで座標を使用する場合、±215を超える座標は使用可能ですが、この範囲外の座標で行われた描画は表示が保証されず、描画が切り取られる可能性があることに注意してください。これは、実装においてshort int が使用されているためです。
Qtのストローク機能によって生成される輪郭線は、曲線形状を扱う場合、あくまで近似値に過ぎません。ベジエ曲線セグメントの輪郭を別のベジエ曲線セグメントで表現することは、ほとんどの場合不可能です。そのため、Qtでは複数の小さな曲線を用いて曲線の輪郭を近似しています。 パフォーマンス上の理由から、Qtがこれらの輪郭線に使用する曲線の数には制限があり、そのためペン幅や拡大率を大きくすると、輪郭線の誤差が増大します。誤差の少ない輪郭線を生成するには、QPainterPathStroker クラスを使用することができます。このクラスには、ユーザーが誤差許容値を指定できるsetCurveThresholdメンバ関数が用意されています。 別の回避策として、まずパスをポリゴンに変換し、そのポリゴンを描画する方法があります。
同様に、Qt は円弧や楕円を三角関数で計算するのではなく、3 次ベジェ曲線で近似するため、円弧上の点は実際の位置からわずかにずれてしまいます。 これに関連して、drawArc()、drawPie()、およびdrawChord() が受け取る角度は偏心角です。これらは、囲み矩形が正方形の場合にのみ、その中心からの方向を測定します。両者に関する詳細については、Arcs and Ellipses を参照してください。
パフォーマンス
QPainterは、グラデーション、合成モード、ベクターグラフィックスなど、開発者が多種多様なグラフィカル操作を行えるようにする充実したフレームワークです。また、QPainterは、さまざまなハードウェアおよびソフトウェアスタックを横断してこれらの操作を実行できます。 当然のことながら、基盤となるハードウェアとソフトウェアの組み合わせはパフォーマンスに何らかの影響を及ぼします。また、合成モード、ブラシ、クリッピング、変形など、あらゆる組み合わせにおいて、すべての操作が高速に実行されることを保証することは、その組み合わせの数が膨大であるため、ほぼ不可能な課題です。 そこで妥協案として、QPainterのAPIおよびバックエンドの一部を選択しました。これにより、特定のハードウェアとソフトウェアの組み合わせにおいて、現実的に達成可能な最高レベルのパフォーマンスが保証されるようになっています。
我々が高性能エンジンとして重点を置いているバックエンドは以下の通りです:
- Raster - このバックエンドはすべてのレンダリングを純粋なソフトウェアで実装しており、QImageへのレンダリングには常に使用されます。最適なパフォーマンスを得るためには、QImage::Format_ARGB32_Premultiplied 、QImage::Format_RGB32 、またはQImage::Format_RGB16 のフォーマットタイプのみを使用してください。QImage::Format_ARGB32 を含むその他のフォーマットでは、パフォーマンスが著しく低下します。このエンジンは、QWidget およびQPixmap でデフォルトで使用されます。
- OpenGL 2.0 (ES) - このバックエンドは、ハードウェアアクセラレーションによるグラフィックス処理の主要なバックエンドです。OpenGL 2.0 または OpenGL/ES 2.0 仕様をサポートするデスクトップマシンや組み込みデバイス上で実行可能です。これには、ここ数年で製造されたほとんどのグラフィックスチップが含まれます。QOpenGLWidget に対してQPainterを使用することで、このエンジンを有効にできます。
これらの操作は以下の通りです:
- 単純な変形(平行移動および拡大縮小)、および0度、90度、180度、270度の回転。
drawPixmap()単純な変形と不透明度を組み合わせたもの(非滑らかな変形モード、QPainter::SmoothPixmapTransformがレンダリングヒントとして有効になっていない場合)。- 単色、2色の線形グラデーション、および単純な変形を適用した矩形塗りつぶし。
- 単純な変形と「交差クリップ」を組み合わせた矩形クリッピング。
- 合成モード「
QPainter::CompositionMode_Source」および「QPainter::CompositionMode_SourceOver 」。 - 単色および2色の線形グラデーションを使用した、角丸長方形の塗りつぶし。
- qDrawBorderPixmap を使用した 3x3 のパッチ付きピクマップ。
このリストは、パフォーマンスが重要なアプリケーションで安全に使用できる機能の目安を示しています。特定の環境では、他の操作も高速である可能性がありますが、それらを多用する前に、ソフトウェアが最終的に実行されるシステム上でベンチマークを実施し、検証することをお勧めします。 また、結果がQPixmap にキャッシュされる場合など、負荷の高い操作でも使用しても問題ないケースもあります。
関連項目: QPaintDevice 、QPaintEngine 、 Qt SVG、基本的な描画例、およびDrawing Utility Functions も参照してください。
メンバ型のドキュメント
enum QPainter::CompositionMode
デジタル画像の合成でサポートされるモードを定義します。合成モードは、ある画像(ソース)のピクセルを、別の画像(デスティネーション)のピクセルとどのように合成するかを指定するために使用されます。
なお、RasterOpという接頭辞が付いたビット単位のラスタ演算モードは、X11およびラスタペイントエンジンでのみネイティブにサポートされています。つまり、Macでこれらのモードを利用するには、QImage を使用するしかありません。RasterOpで指定されるブレンドモードは、アルファ成分を持つペンやブラシではサポートされていません。 また、「QPainter::Antialiasing 」というレンダリングヒントを有効にすると、RasterOpモードは事実上無効になります。


最も一般的なタイプは SourceOver(しばしば単にアルファブレンディングと呼ばれる)であり、ソースピクセルがデスティネーションピクセルの上に合成され、ソースのアルファ成分によってピクセルの半透明度が決定されます。
いくつかの合成モードでは、効果を発揮するために、ソース画像またはターゲット画像にアルファチャンネルが必要です。最適なパフォーマンスを得るには、Format_ARGB32_Premultiplied 形式の画像を使用することをお勧めします。
合成モードが設定されると、すべてのペイント演算子、ペン、ブラシ、グラデーション、およびピクマップ/画像の描画に適用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QPainter::CompositionMode_SourceOver | 0 | これがデフォルトのモードです。ソースのアルファ値を使用して、ピクセルを宛先の上でブレンドします。 |
QPainter::CompositionMode_DestinationOver | 1 | 宛先のアルファ値を使用して、ソースのピクセルの上にブレンドされます。このモードは、CompositionMode_SourceOver の逆のモードです。 |
QPainter::CompositionMode_Clear | 2 | 宛先のピクセルは、ソースとは無関係にクリア(完全に透明)されます。 |
QPainter::CompositionMode_Source | 3 | 出力はソースのピクセルとなります(これは基本的なコピー操作を意味し、ソースのピクセルが不透明な場合は SourceOver と同じになります)。 |
QPainter::CompositionMode_Destination | 4 | 出力は宛先のピクセルになります。これは、ブレンドがまったく行われないことを意味します。このモードは、CompositionMode_Source の逆です。 |
QPainter::CompositionMode_SourceIn | 5 | 出力はソースピクセルとなり、そのアルファ値はデスティネーションのアルファ値分だけ減算されます。 |
QPainter::CompositionMode_DestinationIn | 6 | 出力は宛先ピクセルとなり、アルファ値はソースのアルファ値分だけ減少します。このモードは CompositionMode_SourceIn の逆です。 |
QPainter::CompositionMode_SourceOut | 7 | 出力はソースピクセルであり、アルファ値はデスティネーションピクセルのアルファ値によって減算されます。 |
QPainter::CompositionMode_DestinationOut | 8 | 出力は宛先ピクセルとなり、アルファはソースピクセルのアルファの逆数だけ減少します。このモードは、CompositionMode_SourceOut の逆です。 |
QPainter::CompositionMode_SourceAtop | 9 | ソースピクセルはデスティネーションピクセルの上にブレンドされ、ソースピクセルのアルファはデスティネーションピクセルのアルファ分だけ減算されます。 |
QPainter::CompositionMode_DestinationAtop | 10 | 宛先ピクセルがソースピクセルの上にブレンドされ、宛先ピクセルのアルファ値はソースピクセルのアルファ値によって低減されます。このモードは、CompositionMode_SourceAtop の逆です。 |
QPainter::CompositionMode_Xor | 11 | ソースのアルファは、宛先のアルファの逆数だけ減算され、宛先のアルファは、ソースのアルファの逆数だけ減算されます。CompositionMode_Xor は、ビット単位の XOR とは異なります。 |
QPainter::CompositionMode_Plus | 12 | ソースピクセルと宛先ピクセルのアルファ値と色値の両方が加算されます。 |
QPainter::CompositionMode_Multiply | 13 | 出力は、ソースの色に宛先の色を乗算したものです。色を白と乗算しても色は変わりませんが、色を黒と乗算すると黒になります。 |
QPainter::CompositionMode_Screen | 14 | ソースと宛先の色が反転された後、掛け合わされます。色を白でスクリーニングすると白になり、黒でスクリーニングすると色は変わりません。 |
QPainter::CompositionMode_Overlay | 15 | 宛先色に応じて、色を乗算またはスクリーニングします。宛先色は、宛先の明度や暗度を反映するようにソース色と混合されます。 |
QPainter::CompositionMode_Darken | 16 | ソース色と宛先色のうち、より暗い方が選択されます。 |
QPainter::CompositionMode_Lighten | 17 | ソース色と宛先色のうち、明るい方が選択されます。 |
QPainter::CompositionMode_ColorDodge | 18 | 目的の色は、ソースの色に合わせて明るくされます。ソースの色が黒の場合、目的の色は変化しません。 |
QPainter::CompositionMode_ColorBurn | 19 | ソース色を反映して、目的色を暗くします。ソース色が白の場合、目的色は変化しません。 |
QPainter::CompositionMode_HardLight | 20 | ソース色に応じて、色を乗算またはスクリーニングします。明るいソース色は目的の色を明るくし、暗いソース色は目的の色を暗くします。 |
QPainter::CompositionMode_SoftLight | 21 | ソースの色に応じて、色を暗くしたり明るくしたりします。CompositionMode_HardLightと同様です。 |
QPainter::CompositionMode_Difference | 22 | 明るい方の色から暗い方の色を差し引きます。白で描画すると目的の色を反転させますが、黒で描画すると目的の色は変化しません。 |
QPainter::CompositionMode_Exclusion | 23 | CompositionMode_Difference に似ていますが、コントラストが低くなります。白で描画すると宛先色が反転し、黒で描画すると宛先色は変更されません。 |
QPainter::RasterOp_SourceOrDestination | 24 | ソースピクセルと宛先ピクセルに対してビット単位の OR 演算を実行します (src OR dst)。 |
QPainter::RasterOp_SourceAndDestination | 25 | ソースピクセルと宛先ピクセルに対してビット単位のAND演算を行います (src AND dst)。 |
QPainter::RasterOp_SourceXorDestination | 26 | ソースピクセルと宛先ピクセルに対してビット単位のXOR演算を実行します (src XOR dst)。 |
QPainter::RasterOp_NotSourceAndNotDestination | 27 | ソースピクセルと宛先ピクセルに対してビット単位の NOR 演算を実行します ((NOT src) AND (NOT dst))。 |
QPainter::RasterOp_NotSourceOrNotDestination | 28 | ソースピクセルと宛先ピクセルに対してビット単位の NAND 演算を実行します ((NOT src) OR (NOT dst))。 |
QPainter::RasterOp_NotSourceXorDestination | 29 | ソースピクセルを反転させ、それを宛先ピクセルと排他的論理和(XOR)演算を行うビット演算を実行します ((NOT src) XOR dst)。 |
QPainter::RasterOp_NotSource | 30 | ソースピクセルを反転させた後、宛先ピクセルと XOR 演算を行うビット演算を実行します(NOT src)。 |
QPainter::RasterOp_NotSourceAndDestination | 31 | ソースを反転させ、それを宛先と AND 演算するビット演算を行います ((NOT src) AND dst)。 |
QPainter::RasterOp_SourceAndNotDestination | 32 | ソースと反転された宛先ピクセルを AND 演算するビット演算を実行します (src AND (NOT dst))。 |
QPainter::RasterOp_NotSourceOrDestination | 33 | ソースを反転させ、それを宛先と OR 演算するビット演算を実行します ((NOT src) OR dst)。 |
QPainter::RasterOp_ClearDestination | 35 | ソースとは無関係に、宛先のピクセルがクリア(0 に設定)されます。 |
QPainter::RasterOp_SetDestination | 36 | ソースとは無関係に、宛先のピクセルが設定(1 に設定)されます。 |
QPainter::RasterOp_NotDestination | 37 | 宛先のピクセルを反転させるビット演算(NOT dst)を行います。 |
QPainter::RasterOp_SourceOrNotDestination | 34 | ソースと反転した宛先ピクセルを OR 演算するビット演算を実行します (src OR (NOT dst))。 |
compositionMode()、setCompositionMode()、Composition Modes 、および「画像合成の例」も参照してください 。
enum QPainter::PixmapFragmentHint
flags QPainter::PixmapFragmentHints
| 定数 | 値 | 説明 |
|---|---|---|
QPainter::OpaqueHint | 0x01 | 描画されるピクマップフラグメントが不透明であることを示します。不透明なフラグメントは、描画速度が速くなる可能性があります。 |
PixmapFragmentHints 型は、QFlags<PixmapFragmentHint> の typedef です。PixmapFragmentHint 値の論理和(OR)を格納します。
QPainter::drawPixmapFragments() およびQPainter::PixmapFragmentも参照してください 。
enum QPainter::RenderHint
flags QPainter::RenderHints
Renderhints は、QPainter に対するフラグを指定するために使用されますが、特定のエンジンによってその指定が反映される場合とされない場合があります。
| 定数 | 値 | 説明 |
|---|---|---|
QPainter::Antialiasing | 0x01 | 可能な場合は、エンジンがプリミティブのエッジにアンチエイリアシングを適用すべきであることを示します。 |
QPainter::TextAntialiasing | 0x02 | 可能な場合は、エンジンがテキストのアンチエイリアシングを行うことを示します。テキストのアンチエイリアシングを強制的に無効にするには、このヒントを使用しないでください。代わりに、フォントのスタイル戦略で `QFont::NoAntialias ` を設定してください。 |
QPainter::SmoothPixmapTransform | 0x04 | エンジンが、最近傍法ではなく、滑らかなピクマップ変換アルゴリズム(バイリニアなど)を使用すべきであることを示します。 |
QPainter::VerticalSubpixelPositioning | 0x08 | フォントエンジンがサポートしている場合、テキストを水平方向だけでなく垂直方向にもピクセルの分数単位で配置できるようにします。これは現在、ヒント設定が `QFont::PreferNoHinting` の場合、すべてのプラットフォームの Freetype および macOS でサポートされています。ほとんどのユースケースでは、これにより視覚的な品質が向上することはありませんが、メモリ消費量が増加し、テキストレンダリングのパフォーマンスが多少低下する可能性があります。 したがって、使用ケースで必要とされない限り、これを有効にすることは推奨されません。使用ケースの一例として、グリフを他の視覚プリミティブと揃える場合が挙げられます。この値は Qt 6.1 で追加されました。 |
QPainter::LosslessImageRendering | 0x40 | 可能な限り、ロスレス画像レンダリングを使用してください。現在、このヒントが使用されるのは、`QPainter ` が設定され、`QPrinter ` または `QPdfWriter` を通じて PDF ファイルを出力する場合のみです。この場合、`drawImage()` または `drawPixmap()` の呼び出しにより、画像はロス有りの JPEG 圧縮ではなく、ロスレス圧縮アルゴリズムを使用してエンコードされます。この値は Qt 5.13 で追加されました。 |
QPainter::NonCosmeticBrushPatterns | 0x80 | 定義済みのパターンスタイルのいずれかを使用してブラシで描画する場合、描画対象のオブジェクトとともにパターンも変形させます。デフォルトでは、パターンは装飾的な要素として扱われるため、アクティブな変形とは無関係に、パターンのピクセルはデバイスのピクセルに直接マッピングされます。この値は Qt 6.4 で追加されました。 |
RenderHints 型は、QFlags<RenderHint> の typedef です。これは、RenderHint 値の OR 結合を格納します。
renderHints()、setRenderHint()、およびRendering Qualityも参照してください 。
メンバ関数のドキュメント
QPainter::QPainter()
ペインターを構築します。
[explicit] QPainter::QPainter(QPaintDevice *device)
device の描画を直ちに開始するペインターを生成します。
このコンストラクタは、QWidget::paintEvent() 内など、短命なペインターに便利であり、一度のみ使用すべきです。このコンストラクタは自動的にbegin() を呼び出し、QPainter のデストラクタは自動的にend() を呼び出します。
以下は、begin() およびend() を使用した例です。
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p;
p.begin(this);
p.drawLine(drawingCode); // drawing code
p.end();
}このコンストラクタを使用した同じ例:
void MyWidget::paintEvent(QPaintEvent *)
{
QPainter p(this);
p.drawLine(drawingCode); // drawing code
}コンストラクタでは、ペインターの初期化に失敗した場合のフィードバックを提供できないため、プリンタなどの外部デバイスに描画する際は、begin() およびend() を使用することをお勧めします。
[noexcept] QPainter::~QPainter()
画家を打ちのめす。
const QBrush &QPainter::background() const
現在の背景ブラシを返します。
setBackground() およびSettingsも参照してください 。
Qt::BGMode QPainter::backgroundMode() const
現在の背景モードを返します。
setBackgroundMode() およびSettingsも参照してください 。
bool QPainter::begin(QPaintDevice *device)
device の描画を開始し、成功した場合はtrue を返し、失敗した場合はfalse を返します。
begin() が呼び出されると、すべてのペインタ設定(setPen()、setBrush() など)がデフォルト値にリセットされることに注意してください。
発生しうるエラーは、次のような深刻な問題です。
painter->begin(nullptr); // impossible - paint device cannot be null
QPixmap image(0, 0);
painter->begin(&image); // impossible - image.isNull() == true;
painter->begin(myWidget);
painter2->begin(myWidget); // impossible - only one painter at a timeほとんどの場合、begin() の代わりにコンストラクタのいずれかを使用でき、end() は破棄時に自動的に実行されることに注意してください。
警告: ペイントデバイスには 、一度に 1 つのペインターしか描画できません。
警告: QImage に対して、QImage::Format_Indexed8 という形式での描画は サポートされていません。
end() およびQPainter()も参照してください 。
void QPainter::beginNativePainting()
描画パイプラインをフラッシュし、ユーザーが基盤となるグラフィックスコンテキストに対して直接コマンドを発行できるよう準備します。この呼び出しの後には、endNativePainting() を必ず呼び出す必要があります。
なお、基盤となるペイントエンジンが変更した状態のみが、それぞれのデフォルト状態にリセットされることに注意してください。リセットされる状態は、リリースごとに変更される可能性があります。現在、OpenGL 2 エンジンでは以下の状態がリセットされます:
- ブレンディングが無効化される
- 深度テスト、ステンシルテスト、シザーテストが無効化される
- アクティブなテクスチャユニットが 0 にリセットされる
- 深度マスク、深度関数、およびクリア深度がデフォルト値にリセットされる
- ステンシルマスク、ステンシル演算、およびステンシル関数がデフォルト値にリセットされる
- 現在の色が純白にリセットされます
たとえば、beginNativePaint()/endNativePainting() ブロック内でユーザーが OpenGL のポリゴンモードを変更した場合、endNativePainting() によってデフォルトの状態にリセットされることはありません。以下は、ペインターコマンドと生の OpenGL コマンドを混在させた例です:
QPainter painter(this);
painter.fillRect(0, 0, 128, 128, Qt::green);
painter.beginNativePainting();
glEnable(GL_SCISSOR_TEST);
glScissor(0, 0, 64, 64);
glClearColor(1, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glDisable(GL_SCISSOR_TEST);
painter.endNativePainting();endNativePainting()も参照してください 。
QRectF QPainter::boundingRect(const QRectF &rectangle, int flags, const QString &text)
text の境界矩形を返します。これは、指定されたrectangle 内で、指定されたflags を使用し、現在設定されているfont()を用いて描画された際の表示結果となります。つまり、この関数は、同じ引数が与えられた場合にdrawText()関数がどこに描画されるかを示します。
text が、指定されたflags を用いて指定されたrectangle 内に収まらない場合、この関数は必要な矩形を返します。
flags 引数は、以下のフラグのビット単位のOR演算の結果です。
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
水平方向または垂直方向の配置フラグのうち、複数のフラグが設定されている場合、結果となる配置は未定義となります。
drawText()、Qt::Alignment 、およびQt::TextFlagも参照してください 。
QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)
指定されたrectangle 内で、指定されたflags を使用し、現在設定されているfont()を用いて描画された際の、text の境界矩形を返します。
これはオーバーロードされた関数です。
QRectF QPainter::boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
このオーバーロードされた関数は、フラグをQt::AlignmentFlag とQt::TextFlag のビット単位のORとして指定する代わりに、option 引数を受け取ります。QTextOption クラスは、一般的なリッチテキストのプロパティに関する記述を提供します。
これはオーバーロードされた関数です。
QTextOptionも参照してください 。
QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
指定されたtext が、点(x,y)を起点とし、幅w 、高さh の長方形内に描画された際に表示される境界矩形を返します。
これはオーバーロードされた関数です。
const QBrush &QPainter::brush() const
ペインターの現在のブラシを返します。
QPainter::setBrush() およびSettingsも参照してください 。
QPoint QPainter::brushOrigin() const
現在のブラシの原点を返します。正確な原点を取得するには、QPainter::brushOriginF() を使用することをお勧めします。
setBrushOrigin() およびSettingsも参照してください 。
[since 6.11] QPointF QPainter::brushOriginF() const
現在のブラシの原点を返します。
この関数は Qt 6.11 で導入されました。
setBrushOrigin() およびSettingsも参照してください 。
QRectF QPainter::clipBoundingRect() const
クリップが存在する場合、現在のクリップの境界矩形を返します。クリップが存在しない場合は、空の矩形を返します。なお、クリップ領域は論理座標で指定されることに注意してください。
境界矩形がクリップ領域を厳密に囲んでいることは保証されません。
setClipRect()、setClipPath()、およびsetClipRegion()も参照してください 。
QPainterPath QPainter::clipPath() const
現在のクリップパスを論理座標で返します。
警告: ` QPainter ` は 、結合されたクリップを明示的に保存しません。これは、基盤となる `QPaintEngine` によって処理されるためです。そのため、パスは要求に応じて再作成され、現在の論理座標系に変換されます。これは、処理負荷が高くなる可能性があります。
関連項目: setClipPath()、clipRegion()、およびsetClipping()。
QRegion QPainter::clipRegion() const
現在設定されているクリップ領域を返します。なお、クリップ領域は論理座標で指定されることに注意してください。
警告: ` QPainter ` は 、結合されたクリップを明示的に保存しません。これは、基盤となる `QPaintEngine` によって処理されるためです。そのため、パスは必要に応じて再作成され、現在の論理座標系に変換されます。これは、処理負荷が高くなる可能性があります。
関連項目: setClipRegion()、clipPath()、setClipping()も参照してください 。
QTransform QPainter::combinedTransform() const
現在のウィンドウ/ビューポート変換とワールド変換を組み合わせた変換行列を返します。
setWorldTransform()、setWindow()、およびsetViewport()も参照してください 。
QPainter::CompositionMode QPainter::compositionMode() const
現在のコンポジションモードを返します。
CompositionMode およびsetCompositionMode()も参照してください 。
QPaintDevice *QPainter::device() const
このペインターが現在描画を行っているペイントデバイスを返します。ペインターがアクティブでない場合は、nullptr を返します。
isActive()も参照してください 。
const QTransform &QPainter::deviceTransform() const
論理座標から、プラットフォーム依存の描画デバイスのデバイス座標へ変換する行列を返します。
この関数は、プラットフォーム依存のハンドル(Qt::HANDLE )でプラットフォームの描画コマンドを使用する場合にのみ必要であり、プラットフォームがネイティブに変換を行わない場合に限定されます。
QPaintEngine::PaintEngineFeature 列挙型を照会することで、プラットフォームが変換を実行するかどうかを確認できます。
worldTransform() およびQPaintEngine::hasFeature()も参照してください 。
void QPainter::drawArc(const QRectF &rectangle, int startAngle, int spanAngle)
指定されたrectangle 、startAngle 、およびspanAngle によって定義される円弧を描画します。
startAngle およびspanAngle は、1/16度単位で指定する必要があります。つまり、円周1周は5760(16 × 360)に相当します。角度の正の値は反時計回り、負の値は時計回りを意味します。 0度は3時の位置にあたります。rectangle が正方形でない場合、これらの角度は偏心角となり、Arcs and Ellipses で説明されているように、長方形の中心からの方向を測るものではありません。
![]() |
drawPie()、drawChord()、および「座標系」も参照してください 。
void QPainter::drawArc(const QRect &rectangle, int startAngle, int spanAngle)
指定されたrectangle 、startAngle 、およびspanAngle によって定義される円弧を描画します。
これはオーバーロードされた関数です。
void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)
(x,y) を起点とする矩形によって定義される円弧を、指定されたwidth およびheight 、ならびに与えられたstartAngle およびspanAngle を用いて描画します。
これはオーバーロードされた関数です。
void QPainter::drawChord(const QRectF &rectangle, int startAngle, int spanAngle)
指定されたrectangle 、startAngle 、およびspanAngle によって定義される弦を描画します。この弦は、現在のbrush()で塗りつぶされます。
startAngle および spanAngle は、1/16度単位で指定する必要があります。つまり、1周は 5760 (16 × 360) となります。角度の正の値は反時計回り、負の値は時計回りを意味します。 0度は3時の位置にあたります。rectangle が正方形でない場合、これらの角度は偏心角となり、Arcs and Ellipses で説明されているように、長方形の中心からの方向を測定するものではありません。
![]() |
drawArc()、drawPie()、および「座標系」も参照してください 。
void QPainter::drawChord(const QRect &rectangle, int startAngle, int spanAngle)
指定されたrectangle 、startAngle 、およびspanAngle によって定義される弦を描画します。
これはオーバーロードされた関数です。
void QPainter::drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
(x,y) を起点とする矩形によって定義される弦を、指定されたwidth およびheight 、ならびに与えられたstartAngle およびspanAngle を用いて描画します。
これはオーバーロードされた関数です。
void QPainter::drawConvexPolygon(const QPointF *points, int pointCount)
配列points の最初のpointCount 個の点によって定義される凸多角形を、現在のペンを使って描画します。
![]() |
最初の点は暗黙的に最後の点と接続され、多角形は現在のbrush()で塗りつぶされます。指定された多角形が凸でない場合、すなわち180度を超える角度が少なくとも1つ含まれている場合、結果は未定義となります。
一部のプラットフォーム(X11など)では、drawConvexPolygon()関数がdrawPolygon()関数よりも高速に動作する場合があります。
drawPolygon()、drawPolyline()、および「座標系」も参照してください 。
void QPainter::drawConvexPolygon(const QPolygon &polygon)
polygon で定義された凸多角形を、現在のペンとブラシを使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawConvexPolygon(const QPolygonF &polygon)
polygon で定義された凸多角形を、現在のペンとブラシを使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawConvexPolygon(const QPoint *points, int pointCount)
配列 `points ` の先頭から `pointCount ` 個の点で定義される凸多角形を、現在のペンを使って描画します。
これはオーバーロードされた関数です。
void QPainter::drawEllipse(const QRectF &rectangle)
指定されたrectangle によって定義される楕円を描画します。
塗りつぶされた楕円のサイズは、rectangle です。size()。線画の楕円のサイズは、rectangle です。size() にペン幅を加えた値となります。
void QPainter::drawEllipse(const QRect &rectangle)
指定されたrectangle によって定義される楕円を描画します。
これはオーバーロードされた関数です。
void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)
center に位置し、半径がrx およびry の楕円を描画します。
これはオーバーロードされた関数です。
void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry)
center に位置し、半径がrx およびry の楕円を描画します。
これはオーバーロードされた関数です。
void QPainter::drawEllipse(int x, int y, int width, int height)
(x,y) を始点とする矩形によって定義される楕円を、指定されたwidth およびheight を用いて描画します。
これはオーバーロードされた関数です。
void QPainter::drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
position の `glyphs ` で表されるグリフを描画します。`position ` は、グリフの文字列に対するベースラインの端を指定します。グリフは、glyphs で選択されたフォントから、glyphs の位置情報で指定されたオフセットで取得されます。
QGlyphRun::setRawFont()、QGlyphRun::setPositions()、およびQGlyphRun::setGlyphIndexes()も参照してください 。
void QPainter::drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
指定されたimage の矩形部分source を、ペイントデバイスのtarget 矩形内に描画します。
注: 画像と矩形のサイズが一致しない場合、画像は 矩形に収まるように拡大縮小されます。
注: これがQImage::devicePixelRatio()によってどのように影響を受けるかについては、Drawing High Resolution Versions of Pixmaps and Images を参照してください 。
低解像度の結果に収まるように画像を変更する必要がある場合(例:32 ビットから 8 ビットへの変換)、flags を使用して、その処理方法を指定してください。
drawPixmap() およびQImage::devicePixelRatio()も参照してください 。
void QPainter::drawImage(const QPoint &point, const QImage &image)
指定されたimage を、指定されたpoint に描画します。
これはオーバーロードされた関数です。
void QPainter::drawImage(const QPointF &point, const QImage &image)
指定されたimage を、指定されたpoint に描画します。
これはオーバーロードされた関数です。
void QPainter::drawImage(const QRect &rectangle, const QImage &image)
指定されたimage を、指定されたrectangle に描画します。
注: 画像と矩形のサイズが一致しない場合、画像は 矩形に収まるように拡大縮小されます。
これはオーバーロードされた関数です。
void QPainter::drawImage(const QRectF &rectangle, const QImage &image)
指定されたimage を、指定されたrectangle 内に描画します。
注: 画像と矩形のサイズが一致しない場合、画像は 矩形に収まるように拡大・縮小されます。
これはオーバーロードされた関数です。
void QPainter::drawImage(const QPoint &point, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
指定されたimage の矩形部分source を、指定されたpoint を原点として描画します。
これはオーバーロードされた関数です。
void QPainter::drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
指定されたimage の矩形部分source を、指定されたpoint を原点として描画します。
これはオーバーロードされた関数です。
void QPainter::drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
指定されたimage の矩形部分source を、ペイントデバイス上のtarget 矩形内に描画します。
注: 画像と矩形のサイズが一致しない場合、画像は 矩形に収まるように拡大縮小されます。
これはオーバーロードされた関数です。
void QPainter::drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0, int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor)
image の一部をペイントデバイスにコピーし、(x,y) の位置に画像を描画します。
(x,y) は、描画対象となるペイントデバイスの左上隅を指定します。(sx,sy) は、描画対象となる画像(image )の左上隅を指定します。デフォルトは (0, 0) です。
(sw,sh) は、描画される画像のサイズを指定します。デフォルトの (0, 0) (および負の値) は、画像の右下隅まで描画することを意味します。
これはオーバーロードされた関数です。
void QPainter::drawLine(const QLineF &line)
line で定義された線を描画します。
drawLines()、drawPolyline()、および「座標系」も参照してください 。
void QPainter::drawLine(const QLine &line)
line で定義された線を描画します。
これはオーバーロードされた関数です。
void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
p1 からp2 まで線を引きます。
これはオーバーロードされた関数です。
void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
p1 からp2 まで線を引きます。
これはオーバーロードされた関数です。
void QPainter::drawLine(int x1, int y1, int x2, int y2)
(x1,y1) から (x2,y2) まで線を引きます。
これはオーバーロードされた関数です。
void QPainter::drawLines(const QLineF *lines, int lineCount)
現在のペンを使用して、配列 `lines ` 内の最初の `lineCount ` 本の線を描画します。
drawLine() およびdrawPolyline()も参照してください 。
void QPainter::drawLines(const QList<QLine> &lines)
リスト `lines ` で定義された直線の集合を、現在のペンとブラシを使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawLines(const QList<QLineF> &lines)
リスト `lines ` で定義された直線の集合を、現在のペンとブラシを使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawLines(const QList<QPoint> &pointPairs)
ベクトル `pointPairs ` 内の各点ペアに対して、現在のペンを使用して線を描画します。
これはオーバーロードされた関数です。
void QPainter::drawLines(const QList<QPointF> &pointPairs)
ベクトル `pointPairs ` 内の各点ペアに対して、現在のペンを使用して線を描画します。配列内の点数が奇数の場合、最後の点は無視されます。
これはオーバーロードされた関数です。
void QPainter::drawLines(const QLine *lines, int lineCount)
現在のペンを使用して、配列 `lines ` の先頭から `lineCount ` 本の線を描画します。
これはオーバーロードされた関数です。
void QPainter::drawLines(const QPoint *pointPairs, int lineCount)
現在のペンを使用して、配列pointPairs 内の最初のlineCount 行を描画します。
これはオーバーロードされた関数です。
void QPainter::drawLines(const QPointF *pointPairs, int lineCount)
現在のペンを使用して、配列pointPairs 内の最初のlineCount 本の線を描画します。線は点のペアとして指定されるため、pointPairs 内の要素数は少なくともlineCount * 2以上である必要があります。
これはオーバーロードされた関数です。
void QPainter::drawPath(const QPainterPath &path)
指定されたペインター `path ` を描画します。輪郭には現在のペンを、塗りつぶしには現在のブラシを使用します。
![]() | |
「Painter Paths」の例および「Vector Deformation」の例も参照してください 。
void QPainter::drawPicture(const QPointF &point, const QPicture &picture)
指定されたpicture を、指定されたpoint で再生します。
QPicture クラスは、QPainter コマンドを記録および再生する描画デバイスです。pictureは、ペインターコマンドをプラットフォーム非依存の形式でIOデバイスにシリアル化します。ウィジェットやピクマップ上に描画できるものはすべて、pictureにも保存できます。
この関数は、point =QPointF(0, 0) を指定して呼び出した場合、QPicture::play() とまったく同じ動作をします。
注: この関数によって、ペインターの状態は 保持されます。
QPicture::play()も参照してください 。
void QPainter::drawPicture(const QPoint &point, const QPicture &picture)
指定されたpicture を、指定されたpoint で再生します。
これはオーバーロードされた関数です。
void QPainter::drawPicture(int x, int y, const QPicture &picture)
指定されたpicture を、点(x,y)に描画します。
これはオーバーロードされた関数です。
void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
指定された `rectangle`、`startAngle `、および `spanAngle` によって定義される円グラフを描画します。
円グラフは、現在のbrush()で塗りつぶされます。
startAngle および spanAngle は、1度の16分の1単位で指定する必要があります。つまり、円周全体は 5760(16 × 360)に相当します。角度の正の値は反時計回り、負の値は時計回りを意味します。 0度は3時の位置にあたります。rectangle が正方形でない場合、これらの角度は偏心角となり、Arcs and Ellipses で説明されているように、長方形の中心からの方向を測定するものではありません。
![]() |
drawEllipse()、drawChord()、および「座標系」も参照してください 。
void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle)
指定されたrectangle 、startAngle 、およびspanAngle によって定義される円グラフを描画します。
これはオーバーロードされた関数です。
void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
(x,y) を起点とする長方形によって定義される円グラフを、指定されたwidth およびheight 、ならびに与えられたstartAngle およびspanAngle を用いて描画します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
指定されたpixmap の矩形部分source を、ペイントデバイス内の指定されたtarget に描画します。
注: ピクマップと矩形のサイズが一致しない場合、ピクマップは 矩形に収まるように拡大縮小されます。
注: これが `QPixmap::devicePixelRatio()` によってどのように影響を受けるかについては、Drawing High Resolution Versions of Pixmaps and Images を参照してください 。
pixmap がQBitmap の場合、ペンの色を使用して「セット」されているビットが描画されます。backgroundMode がQt::OpaqueMode の場合、「セットされていない」ビットは背景ブラシの色を使用して描画されます。backgroundMode がQt::TransparentMode の場合、「セットされていない」ビットは透明になります。グラデーションやテクスチャカラーを使用したビットマップの描画はサポートされていません。
drawImage() およびQPixmap::devicePixelRatio()も参照してください 。
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)
指定されたpixmap を、指定されたpoint を原点として描画します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)
指定されたpixmap を、指定されたpoint を原点として描画します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
指定されたpixmap を、指定されたrectangle に描画します。
注: ピクマップと矩形のサイズが一致しない場合、ピクマップは 矩形に収まるように拡大縮小されます。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap, const QRect &source)
指定されたpixmap の矩形部分source を、指定されたpoint を原点として描画します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
指定されたpixmap の矩形部分source を、指定されたpoint を原点として描画します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(const QRect &target, const QPixmap &pixmap, const QRect &source)
指定されたpixmap の矩形部分source を、ペイントデバイス内の指定されたtarget に描画します。
注: ピクマップと矩形のサイズが一致しない場合、ピクマップは 矩形に収まるように拡大縮小されます。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap)
指定されたpixmap を、座標 (x,y) に描画します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
pixmap を、位置(x,y)にある矩形内に、指定されたwidth およびheight を用いて描画します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
指定されたpixmap の一部をペイントデバイスにコピーし、(x,y)の位置にピクマップを描画します。
(x,y) は、描画対象となるペイントデバイスの左上隅を指定します。(sx,sy) は、描画対象となるピクマップ(pixmap )の左上隅を指定します。デフォルトは (0, 0) です。
(sw,sh) は、描画対象となるピクマップのサイズを指定します。デフォルトの (0, 0) (および負の値) は、ピクマップの右下隅までを意味します。
これはオーバーロードされた関数です。
void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
指定されたpixmap のうち、原点(sx,sy)、幅sw 、高さsh を持つ矩形部分を、点(x,y)に、幅w 、高さh で描画します。sw または sh が 0 の場合、ピクマップの幅/高さが使用され、オフセット sx/sy によって調整されます。
これはオーバーロードされた関数です。
void QPainter::drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
この関数は、pixmap 、またはpixmap のサブ矩形を、スケール、回転、不透明度が異なる複数の位置に描画するために使用されます。fragments は、各ピクマップフラグメントの描画に使用するパラメータを指定するfragmentCount 要素の配列です。hints パラメータを使用すると、描画のヒントを渡すことができます。
この関数は、バックエンドが状態の変更を最適化できるため、drawPixmap() を複数回呼び出すよりも高速になる可能性があります。
QPainter::PixmapFragment およびQPainter::PixmapFragmentHintも参照してください 。
void QPainter::drawPoint(const QPointF &position)
指定された座標position に、現在のペンの色を使用して1つの点を描画します。
「座標系」も参照してください 。
void QPainter::drawPoint(const QPoint &position)
指定されたposition 座標に、現在のペンの色を使用して1つの点を描画します。
これはオーバーロードされた関数です。
void QPainter::drawPoint(int x, int y)
位置 (x,y) に1つの点を描画します。
これはオーバーロードされた関数です。
void QPainter::drawPoints(const QPointF *points, int pointCount)
配列points 内の最初のpointCount 個の点を、現在のペンの色を使用して描画します。
「座標系」も参照してください 。
void QPainter::drawPoints(const QPolygon &points)
ベクトル `points` の各点を描画します。
これはオーバーロードされた関数です。
void QPainter::drawPoints(const QPolygonF &points)
ベクトル `points` 内の点を描画します。
これはオーバーロードされた関数です。
void QPainter::drawPoints(const QPoint *points, int pointCount)
配列points 内の最初のpointCount 個の点を、現在のペンの色を使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
配列 `points ` の先頭にある `pointCount ` 個の点で定義された多角形を、現在のペンとブラシを使用して描画します。
![]() |
最初の点は暗黙的に最後の点と接続され、多角形は現在のbrush()で塗りつぶされます。
fillRule がQt::WindingFill の場合、多角形はワインディング塗りつぶしアルゴリズムを使用して塗りつぶされます。fillRule がQt::OddEvenFill の場合、多角形は奇数・偶数塗りつぶしアルゴリズムを使用して塗りつぶされます。これらの塗りつぶしルールに関するより詳細な説明については、Qt::FillRule を参照してください。
drawConvexPolygon()、drawPolyline()、および「座標系」も参照してください 。
void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
指定されたpoints によって定義された多角形を、塗りつぶしルールfillRule を使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
指定されたpoints によって定義された多角形を、塗りつぶしルールfillRule を使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
配列 `points` の先頭pointCount 個の点で定義される多角形を描画します。
これはオーバーロードされた関数です。
void QPainter::drawPolyline(const QPointF *points, int pointCount)
points で指定された最初のpointCount 個の点によって定義されるポリラインを、現在のペンを使用して描画します。
drawPolygon() 関数とは異なり、最後の点は最初の点と接続されず、ポリラインも塗りつぶされない点に注意してください。
drawLines()、drawPolygon()、および「座標系」も参照してください 。
void QPainter::drawPolyline(const QPolygon &points)
指定されたpoints によって定義されたポリラインを、現在のペンを使って描画します。
これはオーバーロードされた関数です。
void QPainter::drawPolyline(const QPolygonF &points)
指定されたpoints によって定義されたポリラインを、現在のペンを使って描画します。
これはオーバーロードされた関数です。
void QPainter::drawPolyline(const QPoint *points, int pointCount)
points で指定された最初のpointCount 個の点で定義されるポリラインを、現在のペンを使って描画します。
これはオーバーロードされた関数です。
void QPainter::drawRect(const QRectF &rectangle)
現在のrectangle を、現在のペンとブラシで描画します。
塗りつぶされた矩形のサイズは、rectangle ×size() です。線画の矩形のサイズは、rectangle ×size() にペン幅を加えた値になります。
drawRects()、drawPolygon()、および「座標系」も参照してください 。
void QPainter::drawRect(const QRect &rectangle)
現在のrectangle を、現在のペンとブラシで描画します。
これはオーバーロードされた関数です。
void QPainter::drawRect(int x, int y, int width, int height)
左上隅を (x,y) とし、指定されたwidth およびheight を用いて長方形を描画します。
これはオーバーロードされた関数です。
void QPainter::drawRects(const QRectF *rectangles, int rectCount)
指定されたrectangles の最初のrectCount を、現在のペンとブラシを使用して描画します。
drawRect()も参照してください 。
void QPainter::drawRects(const QList<QRect> &rectangles)
指定されたrectangles を、現在のペンとブラシを使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawRects(const QList<QRectF> &rectangles)
指定されたrectangles を、現在のペンとブラシを使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawRects(const QRect *rectangles, int rectCount)
指定されたrectangles の最初のrectCount を、現在のペンとブラシを使用して描画します。
これはオーバーロードされた関数です。
void QPainter::drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
指定された矩形rect を、角を丸くして描画します。
引数 `xRadius ` および `yRadius ` は、角が丸い矩形の角を定義する楕円の半径を指定します。`mode ` が `Qt::RelativeSize` の場合、`xRadius ` および `yRadius ` は、それぞれ矩形の幅と高さの半分に対するパーセンテージで指定され、0.0 から 100.0 の範囲内である必要があります。
塗りつぶされた矩形のサイズは、`rect` です。size() 。線画の矩形のサイズは、`rect` です。size() にペン幅を加えた値となります。
![]() |
void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
指定された矩形rect を、角を丸くして描画します。
これはオーバーロードされた関数です。
void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
指定された矩形(x 、y 、w 、h )を、角を丸くして描画します。
これはオーバーロードされた関数です。
void QPainter::drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
指定されたstaticText を、指定されたtopLeftPosition に描画します。
テキストは、ペインターに設定されたフォントおよび変形を使用して描画されます。ペインターに設定されたフォントおよび/または変形が、QStaticText のレイアウト初期化時に使用されたものと異なる場合、レイアウトを再計算する必要があります。QStaticText::prepare() を使用して、staticText を、後で描画される際のフォントおよび変形で初期化してください。
topLeftPosition が、staticText が初期化された時点、または最後に描画された時点の状態と異なっている場合、テキストを新しい位置に変換する際にわずかなオーバーヘッドが発生します。
注: ペインターの変換がアフィン変換でない場合 、staticText はdrawText() への通常の呼び出しを使用して描画されるため、パフォーマンス向上の可能性は失われます。
注: y 座標は フォントの上端として使用されます。
QStaticTextも参照してください 。
void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
staticText をtopLeftPosition に描画します。
注: y座標は フォントの上端として使用されます。
これはオーバーロードされた関数です。
void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)
座標left およびtop の位置に、staticText を描画します。
注: y座標は フォントの上端として扱われます。
これはオーバーロードされた関数です。
void QPainter::drawText(const QPointF &position, const QString &text)
指定されたtext を、現在定義されているテキストの方向で、指定されたposition を起点として描画します。
この関数は、テキストを複数行に分割できず、改行文字(\n )を表示することもできないため、改行文字を処理しません。改行文字を含む複数行のテキストを描画したい場合や、テキストを折り返したい場合は、代わりに矩形を引数とする QPainter::drawText() のオーバーロードを使用してください。
デフォルトでは、QPainter はテキストをアンチエイリアス処理して描画します。
注: y座標は フォントのベースラインとして使用されます。
void QPainter::drawText(const QPoint &position, const QString &text)
指定されたtext を、現在定義されているテキストの方向で、指定されたposition から開始して描画します。
デフォルトでは、QPainter はアンチエイリアス処理されたテキストを描画します。
注: y座標は フォントのベースラインとして使用されます。
これはオーバーロードされた関数です。
setFont() およびsetPen()も参照してください 。
void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
指定されたtext を、rectangle に描画します。この際、option を使用して、位置、方向、および向きを制御します。option で指定されたオプションは、QPainter オブジェクト自体に設定されたオプションよりも優先されます。
デフォルトでは、QPainter はアンチエイリアス処理を施してテキストを描画します。
注: rectangle のy座標は 、フォントの上端として使用されます。
これはオーバーロードされた関数です。
setFont() およびsetPen()も参照してください 。
void QPainter::drawText(int x, int y, const QString &text)
指定されたtext を、位置(x,y)に、ペインターで現在定義されているテキスト方向を使用して描画します。
デフォルトでは、QPainter はアンチエイリアス処理を施してテキストを描画します。
注: y座標は 、フォントのベースラインとして使用されます。
これはオーバーロードされた関数です。
setFont() およびsetPen()も参照してください 。
void QPainter::drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
指定されたtext を、指定されたflags に従って、指定されたrectangle 内に描画します。
boundingRect (nullでない場合)は、テキスト全体を囲むように境界矩形を設定するために使用されます。たとえば、次の図では、点線はこの関数によって計算されたboundingRect を表し、破線はrectangle を表しています:
![]() | |
デフォルトでは、QPainter はテキストにアンチエイリアスを適用して描画します。
注: rectangle のy座標は 、フォントの上端として使用されます。
これはオーバーロードされた関数です。
setFont() およびsetPen()も参照してください 。
void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
指定されたtext を、指定されたrectangle 内に描画します。rectangle とアラインメントflags によって、text のアンカーが定義されます。
![]() | |
boundingRect (nullでない場合)は、テキスト全体を囲むためにバウンディング矩形がどのような形状であるべきかを指定します。例えば、次の図では、点線は関数によって計算されたboundingRect を表し、破線はrectangle を表しています:
![]() | |
flags 引数は、以下のフラグのビット単位のOR演算で構成されます:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextDontClip
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
- Qt::TextIncludeTrailingSpaces
デフォルトでは、QPainter はテキストをアンチエイリアス処理して描画します。
注: rectangle のy座標は 、フォントの上端として使用されます。
これはオーバーロードされた関数です。
関連項目: ` Qt::AlignmentFlag` 、`Qt::TextFlag`、`boundingRect()`、および `layoutDirection()`。
void QPainter::drawText(int x, int y, int width, int height, int flags, const QString &text, QRect *boundingRect = nullptr)
指定されたtext を、原点 (x,y)、width 、height を持つ矩形内に描画します。
boundingRect (nullでない場合)は、テキスト全体を囲むために境界矩形がどのようなものになるべきかを指定します。例えば、次の図では、点線は関数によって計算されたboundingRect を表し、破線はx 、y 、width 、およびheight によって定義される矩形を表しています:
![]() | |
flags 引数は、以下のフラグのビット単位のOR演算によるものです:
- Qt::AlignLeft
- Qt::AlignRight
- Qt::AlignHCenter
- Qt::AlignJustify
- Qt::AlignTop
- Qt::AlignBottom
- Qt::AlignVCenter
- Qt::AlignCenter
- Qt::TextSingleLine
- Qt::TextExpandTabs
- Qt::TextShowMnemonic
- Qt::TextWordWrap
デフォルトでは、QPainter はアンチエイリアス処理を施してテキストを描画します。
注: y座標は フォントの上端として扱われます。
これはオーバーロードされた関数です。
関連項目: Qt::AlignmentFlag 、Qt::TextFlag 、setFont()、およびsetPen()。
void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())
指定されたrectangle の内部に、指定されたposition を原点として、pixmap をタイル状に描画します。
drawTiledPixmap() を呼び出すことは、drawPixmap() を数回呼び出して領域をピクマップで塗りつぶす(タイル状に並べる)ことと同様ですが、基盤となるウィンドウシステムによっては、はるかに効率的になる可能性があります。
drawTiledPixmap() は、高 dpi ディスプレイ(devicePixelRatio > 1)でも、通常の dpi ディスプレイと同じ視覚的なタイルパターンを生成します。pixmap の devicePixelRatio を設定して、タイルのサイズを制御します。たとえば、これを 2 に設定すると、タイルの幅と高さが(1x および 2x ディスプレイの両方で)半分になり、2x ディスプレイでは高解像度の出力が得られます。
position のオフセットは、rectangle の左上隅を基準とした、デバイス非依存ピクセル単位で指定されます。position を使用すると、rectangle 内の繰り返しパターンを整列させることができます。
drawPixmap()も参照してください 。
void QPainter::drawTiledPixmap(const QRect &rectangle, const QPixmap &pixmap, const QPoint &position = QPoint())
指定されたrectangle の内側に、指定されたposition を原点として、pixmap をタイル状に描画します。
これはオーバーロードされた関数です。
void QPainter::drawTiledPixmap(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
指定された矩形内に、タイル状に配置されたpixmap を描画します。
(x,y) は、描画対象となるペイントデバイスの左上隅を指定します。ここで、width およびheight が指定されます。
(sx,sy) は、ピクマップが描画される指定された矩形内の原点を指定します。原点の位置は、(x,y) を基準としたデバイス非依存ピクセル単位で指定されます。デフォルトは (0, 0) です。
これはオーバーロードされた関数です。
bool QPainter::end()
描画を終了します。描画中に使用されたリソースはすべて解放されます。通常、デストラクタによって自動的に呼び出されるため、この関数を明示的に呼び出す必要はありません。
ペインターがもはやアクティブでない場合は `true ` を返し、それ以外の場合は `false` を返します。
begin() およびisActive()も参照してください 。
void QPainter::endNativePainting()
ネイティブの描画コマンドを手動で実行した後、ペインターを元の状態に復元します。これにより、ペインターは他のペインターコマンドを呼び出す前に、その動作に必要なネイティブの状態を復元することができます。
beginNativePainting()も参照してください 。
void QPainter::eraseRect(const QRectF &rectangle)
指定されたrectangle の内側領域を消去します。これは、
fillRect(rectangle, background());fillRect()も参照してください 。
void QPainter::eraseRect(const QRect &rectangle)
指定されたrectangle の内側の領域を消去します。
これはオーバーロードされた関数です。
void QPainter::eraseRect(int x, int y, int width, int height)
(x,y) を起点とする矩形内の領域を、指定されたwidth およびheight を用いて消去します。
これはオーバーロードされた関数です。
void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)
指定された `path ` を、指定された `brush` を使用して塗りつぶします。輪郭線は描画されません。
あるいは、QBrush の代わりにQColor を指定することもできます。QBrush のコンストラクタ(QColor 引数を受け取る)は、自動的にソリッドパターンブラシを作成します。
drawPath()も参照してください 。
void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)
指定されたrectangle に、指定されたbrush を埋め込みます。
あるいは、QBrush の代わりにQColor を指定することもできます。QBrush コンストラクタ(QColor 引数を受け取る)は、自動的にソリッドパターンブラシを作成します。
drawRect()も参照してください 。
void QPainter::fillRect(const QRect &rectangle, QGradient::Preset preset)
指定されたrectangle に、指定されたグラデーションpreset を適用します。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRect &rectangle, Qt::BrushStyle style)
指定されたrectangle を、指定されたブラシstyle で塗りつぶします。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRect &rectangle, Qt::GlobalColor color)
指定されたrectangle に、指定されたcolor を代入します。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRect &rectangle, const QBrush &brush)
指定されたrectangle を、指定されたbrush で埋めます。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRect &rectangle, const QColor &color)
指定されたrectangle に、指定されたcolor を代入します。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRectF &rectangle, QGradient::Preset preset)
指定されたrectangle に、指定されたグラデーションpreset を適用します。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRectF &rectangle, Qt::BrushStyle style)
指定されたrectangle を、指定されたブラシstyle で塗りつぶします。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRectF &rectangle, Qt::GlobalColor color)
指定されたrectangle に、指定されたcolor を代入します。
これはオーバーロードされた関数です。
void QPainter::fillRect(const QRectF &rectangle, const QColor &color)
指定されたrectangle に、color で指定された内容を設定します。
これはオーバーロードされた関数です。
void QPainter::fillRect(int x, int y, int width, int height, QGradient::Preset preset)
(x,y) を起点とする長方形を、指定されたwidth およびheight を用いて、指定されたグラデーションpreset で塗りつぶします。
これはオーバーロードされた関数です。
void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
指定されたブラシstyle を使用して、(x,y)を起点とする矩形を、指定されたwidth およびheight で塗りつぶします。
これはオーバーロードされた関数です。
void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
(x,y) を起点とする矩形を、指定されたwidth およびheight を用いて、指定されたcolor を使用して塗りつぶします。
これはオーバーロードされた関数です。
void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)
(x,y) を起点とする矩形を、指定されたwidth およびheight を用いて、指定されたbrush を使用して塗りつぶします。
これはオーバーロードされた関数です。
void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)
(x,y) を起点とする矩形を、指定されたwidth およびheight を用いて、指定されたcolor を使用して塗りつぶします。
これはオーバーロードされた関数です。
const QFont &QPainter::font() const
テキストの描画に使用される、現在設定されているフォントを返します。
setFont()、drawText()、およびSettingsも参照してください 。
QFontInfo QPainter::fontInfo() const
ペインターがアクティブな場合、そのペインターのフォント情報を返します。そうでない場合、戻り値は未定義となります。
font()、isActive()、およびSettingsも参照してください 。
QFontMetrics QPainter::fontMetrics() const
ペインターがアクティブな場合、そのペインターのフォントメトリクスを返します。そうでない場合、戻り値は未定義となります。
font()、isActive()、およびSettingsも参照してください 。
bool QPainter::hasClipping() const
クリッピングが設定されている場合は `true ` を返し、そうでない場合は `false` を返します。
setClipping() およびClippingも参照してください 。
bool QPainter::isActive() const
begin() が呼び出され、end() がまだ呼び出されていない場合は、true を返します。それ以外の場合は、false を返します。
begin() およびQPaintDevice::paintingActive()も参照してください 。
Qt::LayoutDirection QPainter::layoutDirection() const
テキストを描画する際に、ペインターが使用するレイアウト方向を返します。
QTextOption::textDirection()、setLayoutDirection()、drawText()、およびSettingsも参照してください 。
qreal QPainter::opacity() const
ペインターの不透明度を返します。デフォルト値は 1 です。
setOpacity()も参照してください 。
QPaintEngine *QPainter::paintEngine() const
ペインターがアクティブな場合、そのペインターが現在操作しているペイントエンジンを返します。そうでない場合は 0 を返します。
isActive()も参照してください 。
const QPen &QPainter::pen() const
ペインターの現在のペンを返します。
setPen() およびSettingsも参照してください 。
QPainter::RenderHints QPainter::renderHints() const
このペインターに対して設定されているレンダリングヒントを指定するフラグを返します。
setRenderHints()、testRenderHint()、およびRendering Qualityも参照してください 。
void QPainter::resetTransform()
translate()、scale()、shear()、rotate()、setWorldTransform()、setViewport()、およびsetWindow() を使用して適用されたすべての変換をリセットします。
Coordinate Transformationsも参照してください 。
void QPainter::restore()
現在のペインターの状態を復元します(スタックから保存済みの状態を取り出します)。
save()も参照してください 。
void QPainter::rotate(qreal angle)
座標系を時計回りに回転させます。指定されたangle パラメータは度単位です。
setWorldTransform() およびCoordinate Transformationsも参照してください 。
void QPainter::save()
現在のペインターの状態を保存します(状態をスタックにプッシュします)。save() の後には、対応するrestore() を必ず実行する必要があります。end() 関数は、スタックをアンワインドします。
restore()も参照してください 。
void QPainter::scale(qreal sx, qreal sy)
座標系を (sx,sy) だけ拡大・縮小します。
setWorldTransform() およびCoordinate Transformationsも参照してください 。
void QPainter::setBackground(const QBrush &brush)
ペインタの背景ブラシを、指定されたbrush に設定します。
背景ブラシとは、不透明なテキスト、点線、およびビットマップを描画する際に塗りつぶしに使用されるブラシのことです。背景ブラシは、透明背景モード(デフォルト設定)では効果を発揮しません。
background()、setBackgroundMode()、およびSettingsも参照してください 。
void QPainter::setBackgroundMode(Qt::BGMode mode)
ペインターの背景モードを指定されたmode
Qt::TransparentMode (デフォルト)は、背景ピクセルを設定せずに点線やテキストを描画します。Qt::OpaqueMode は、これらの領域を現在の背景色で塗りつぶします。
ビットマップやピクマップを透明に描画するには、QPixmap::setMask() を使用する必要があることに注意してください。
backgroundMode()、setBackground()、およびSettingsも参照してください 。
void QPainter::setBrush(const QBrush &brush)
画家の筆を、指定されたbrush に設定します。
ペインターのブラシは、図形の塗りつぶし方法を定義します。
brush() およびSettingsも参照してください 。
[since 6.11] void QPainter::setBrush(QBrush &&brush)
これはオーバーロードされた関数です。
この関数は Qt 6.11 で導入されました。
[since 6.9] void QPainter::setBrush(QColor color)
ペインターのブラシを、指定されたcolor を持つソリッドブラシに設定します。
これはオーバーロードされた関数です。
この関数は Qt 6.9 で導入されました。
void QPainter::setBrush(Qt::BrushStyle style)
ペインターのブラシを黒色に設定し、指定されたstyle を適用します。
これはオーバーロードされた関数です。
[since 6.9] void QPainter::setBrush(Qt::GlobalColor color)
ペインターのブラシを、指定されたcolor を持つソリッドブラシに設定します。
これはオーバーロードされた関数です。
この関数は Qt 6.9 で導入されました。
void QPainter::setBrushOrigin(const QPointF &position)
ブラシの原点をposition に設定します。
ブラシの原点は、ペインターのブラシの (0, 0) 座標を指定します。
Qt 3 では、ウィジェットの親の背景を採用するために `brushOrigin()` が必要でしたが、Qt 4 のペインターは、ウィジェットの `autoFillBackground ` プロパティを `true` に設定して明示的に指示しない限り背景を描画しないため、これはもはや必要ありません。
brushOrigin() およびSettingsも参照してください 。
void QPainter::setBrushOrigin(const QPoint &position)
ブラシの原点を指定されたposition に設定します。
これはオーバーロードされた関数です。
void QPainter::setBrushOrigin(int x, int y)
ブラシの原点を (x,y) に設定します。
これはオーバーロードされた関数です。
void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
クリッピングを有効にし、ペインタのクリップパスを指定されたpath に設定します。クリップのoperation も指定します。
クリップパスは論理座標(ペインター座標)で指定されることに注意してください。
clipPath()、clipRegion()、およびClippingも参照してください 。
void QPainter::setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
クリッピングを有効にし、指定されたクリップoperation を使用して、クリップ領域を指定されたrectangle に設定します。デフォルトでは、現在のクリップ矩形が置き換えられます。
クリップ矩形は論理(ペインター)座標で指定されることに注意してください。
clipRegion()、setClipping()、およびClippingも参照してください 。
void QPainter::setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)
クリッピングを有効にし、クリップ領域を (x,y) を起点とする矩形に設定します。また、指定されたwidth およびheight を適用します。
void QPainter::setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
クリッピングを有効にし、指定されたクリップoperation を使用して、クリップ領域を指定されたrectangle に設定します。
これはオーバーロードされた関数です。
void QPainter::setClipRegion(const QRegion ®ion, Qt::ClipOperation operation = Qt::ReplaceClip)
指定されたクリップoperation を使用して、クリップ領域を指定されたregion に設定します。デフォルトのクリップ操作は、現在のクリップ領域を置き換えることです。
クリップ領域は論理座標で指定されることに注意してください。
clipRegion()、setClipRect()、およびClippingも参照してください 。
void QPainter::setClipping(bool enable)
enable が true の場合はクリッピングを有効にし、enable が false の場合はクリッピングを無効にします。
hasClipping() およびClippingも参照してください 。
void QPainter::setCompositionMode(QPainter::CompositionMode mode)
コンポジションモードを指定されたmode に設定します。
警告: すべての合成モードを完全にサポートしているのは、QImage 上で動作するQPainter のみです。 RasterOp モードは、compositionMode() に記載されている通り、X11 でサポートされています。
compositionMode()も参照してください 。
void QPainter::setFont(const QFont &font)
ペインターのフォントを、指定されたfont に設定します。
このフォントは、その後のdrawText()関数で使用されます。テキストの色はペンの色と同じになります。
利用できないフォントを設定した場合、Qt はそれに最も近いフォントを検索します。font() は setFont() を使用して設定した値を返し、fontInfo() は実際に使用されているフォントを返します(これらは同じである場合もあります)。
font()、drawText()、およびSettingsも参照してください 。
void QPainter::setLayoutDirection(Qt::LayoutDirection direction)
テキストを描画する際にペインターが使用するレイアウト方向を、指定されたdirection に設定します。
デフォルトはQt::LayoutDirectionAuto であり、この場合、描画されるテキストから方向が暗黙的に決定されます。
QTextOption::setTextDirection()、layoutDirection()、drawText()、およびSettingsも参照してください 。
void QPainter::setOpacity(qreal opacity)
ペインターの不透明度をopacity に設定します。値は0.0から1.0の範囲で指定する必要があります。0.0は完全に透明、1.0は完全に不透明です。
ペインターに設定された不透明度は、各描画操作に個別に適用されます。図形の塗りつぶしと輪郭線の描画は、別々の描画操作として扱われます。
opacity()も参照してください 。
void QPainter::setPen(const QPen &pen)
ペインターのペンを、指定されたpen に設定します。
pen は、線や輪郭線の描画方法を定義するほか、テキストの色も定義します。
[since 6.11] void QPainter::setPen(QPen &&pen)
これはオーバーロードされた関数です。
この関数は Qt 6.11 で導入されました。
void QPainter::setPen(Qt::PenStyle style)
ペインターのペンを、指定されたstyle 、幅1、色黒に設定します。
これはオーバーロードされた関数です。
void QPainter::setPen(const QColor &color)
ペインターのペンを、スタイル「Qt::SolidLine 」、幅「1」、および指定された「color 」に設定します。
これはオーバーロードされた関数です。
void QPainter::setRenderHint(QPainter::RenderHint hint, bool on = true)
on が true の場合、指定されたレンダリングhint をペインターに設定します。そうでない場合は、レンダリングヒントをクリアします。
setRenderHints()、renderHints()、およびRendering Qualityも参照してください 。
void QPainter::setRenderHints(QPainter::RenderHints hints, bool on = true)
on が true の場合、指定されたレンダリングhints をペインターに設定します。それ以外の場合は、レンダリングヒントをクリアします。
setRenderHint()、renderHints()、およびRendering Qualityも参照してください 。
void QPainter::setTransform(const QTransform &transform, bool combine = false)
ワールド変換行列を設定します。combine がtrueの場合、指定されたtransform は現在の行列と合成されます。そうでない場合は、現在の行列が置き換えられます。
transform() およびsetWorldTransform()も参照してください 。
void QPainter::setViewTransformEnabled(bool enable)
enable がtrueの場合はビュー変換を有効にし、enable がfalseの場合はビュー変換を無効にします。
viewTransformEnabled() および「ウィンドウとビューポートの変換」も参照してください 。
void QPainter::setViewport(const QRect &rectangle)
ペインターのビューポート矩形を指定されたrectangle に設定し、ビュー変換を有効にします。
ビューポート矩形はビュー変換の一部です。ビューポートはデバイスの座標系を指定します。これと対をなすwindow()は、論理座標系を指定します。
デフォルトのビューポート矩形は、デバイスの矩形と同じです。
viewport()、viewTransformEnabled()、および「ウィンドウとビューポートの変換」も参照してください 。
void QPainter::setViewport(int x, int y, int width, int height)
ペインターのビューポート矩形を、(x,y) から始まる矩形に設定し、指定されたwidth およびheight を適用します。
これはオーバーロードされた関数です。
void QPainter::setWindow(const QRect &rectangle)
ペインターのウィンドウを指定されたrectangle に設定し、ビューの変換を有効にします。
ウィンドウの矩形は、ビュー変換の一部です。ウィンドウは論理座標系を指定します。その対となるviewport()は、デバイス座標系を指定します。
デフォルトのウィンドウ矩形は、デバイスの矩形と同じです。
window()、viewTransformEnabled()、および「ウィンドウとビューポートの変換」も参照してください 。
void QPainter::setWindow(int x, int y, int width, int height)
ペインターのウィンドウを、(x,y) を始点とする矩形に設定し、指定されたwidth およびheight を適用します。
これはオーバーロードされた関数です。
void QPainter::setWorldMatrixEnabled(bool enable)
enable が true の場合は変換を有効にし、enable が false の場合は変換を無効にします。ワールド変換行列は変更されません。
worldMatrixEnabled()、worldTransform()、およびCoordinate Transformationsも参照してください 。
void QPainter::setWorldTransform(const QTransform &matrix, bool combine = false)
ワールド変換行列を設定します。combine がtrueの場合、指定されたmatrix は現在の行列と合成されます。そうでない場合は、現在の行列が置き換えられます。
worldTransform()、transform()、およびsetTransform()も参照してください 。
void QPainter::shear(qreal sh, qreal sv)
座標系を (sh,sv) によってせん断する。
setWorldTransform() およびCoordinate Transformationsも参照してください 。
void QPainter::strokePath(const QPainterPath &path, const QPen &pen)
path のパスに沿って、pen
fillPath() およびDrawingも参照してください 。
bool QPainter::testRenderHint(QPainter::RenderHint hint) const
hint が設定されている場合はtrue を返し、そうでない場合はfalse を返します。
renderHints() およびsetRenderHint()も参照してください 。
const QTransform &QPainter::transform() const
worldTransform() の別名です。ワールド変換行列を返します。
setTransform() およびworldTransform()も参照してください 。
void QPainter::translate(const QPointF &offset)
指定されたoffset によって座標系を変換します。つまり、指定されたoffset が各点に加算されます。
setWorldTransform() およびCoordinate Transformationsも参照してください 。
void QPainter::translate(const QPoint &offset)
指定されたoffset によって座標系を変換します。
これはオーバーロードされた関数です。
void QPainter::translate(qreal dx, qreal dy)
座標系をベクトル (dx,dy) だけ変位させます。
これはオーバーロードされた関数です。
bool QPainter::viewTransformEnabled() const
ビュー変換が有効な場合は `true ` を返し、そうでない場合は `false` を返します。
setViewTransformEnabled() およびworldTransform()も参照してください 。
QRect QPainter::viewport() const
ビューポートの矩形を返します。
setViewport() およびsetViewTransformEnabled()も参照してください 。
QRect QPainter::window() const
ウィンドウの矩形を返します。
setWindow() およびsetViewTransformEnabled()も参照してください 。
bool QPainter::worldMatrixEnabled() const
ワールド変換が有効な場合は `true ` を返し、そうでない場合は `false` を返します。
setWorldMatrixEnabled()、worldTransform()、および「座標系」も参照してください 。
const QTransform &QPainter::worldTransform() const
ワールド変換行列を返します。
setWorldTransform()も参照してください 。
© 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.






















