QPainter Class

QPainter 클래스는 위젯 및 기타 페인트 장치에서 로우 레벨 페인팅을 수행합니다. 더 보기...

Header: #include <QPainter>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
상속 대상:

QStylePainter

참고: 이 클래스의 모든 함수는 재진입됩니다.

공용 유형

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 *디바이스)
~QPainter()
const QBrush &background() const
Qt::BGMode backgroundMode() const
bool begin(QPaintDevice * 디바이스)
void beginNativePainting()
QRectF boundingRect(const QRectF &rectangle, int flags, const QString &text)
QRect boundingRect(const QRect &rectangle, int flags, const QString &text)
QRectF boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())
QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text)
const QBrush &brush() const
QPoint brushOrigin() 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, int startAngle, int spanAngle)
void drawArc(const QRect &rectangle, int startAngle, int spanAngle)
void drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawChord(const QRectF &rectangle, int startAngle, int spanAngle)
void drawChord(const QRect &rectangle, int startAngle, int spanAngle)
void drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)
void drawConvexPolygon(const QPointF *points, int pointCount)
void drawConvexPolygon(const QPolygon &polygon)
void drawConvexPolygon(const QPolygonF &polygon)
void drawConvexPolygon(const QPoint *points, int pointCount)
void drawEllipse(const QRectF &rectangle)
void drawEllipse(const QRect &rectangle)
void drawEllipse(const QPoint &center, int rx, int ry)
void drawEllipse(const QPointF &center, qreal rx, qreal ry)
void drawEllipse(int x, int y, int width, int height)
void drawGlyphRun(const QPointF &position, const QGlyphRun &glyphs)
void drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = 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::ImageConversionFlags flags = Qt::AutoColor)
void drawImage(const QPointF &point, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
void drawImage(const QRect &target, const QImage &image, const QRect &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
void 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)
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(int x1, int y1, int x2, int y2)
void drawLines(const QLineF *lines, int lineCount)
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, int lineCount)
void drawLines(const QPoint *pointPairs, int lineCount)
void drawLines(const QPointF *pointPairs, int lineCount)
void drawPath(const QPainterPath &path)
void drawPicture(const QPointF &point, const QPicture &picture)
void drawPicture(const QPoint &point, const QPicture &picture)
void drawPicture(int x, int y, const QPicture &picture)
void drawPie(const QRectF &rectangle, int startAngle, int spanAngle)
void drawPie(const QRect &rectangle, int startAngle, int spanAngle)
void drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)
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(int x, int y, const QPixmap &pixmap)
void drawPixmap(int x, int y, int width, int height, const QPixmap &pixmap)
void drawPixmap(int x, int y, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
void drawPixmap(int x, int y, int w, int h, const QPixmap &pixmap, int sx, int sy, int sw, int sh)
void drawPixmapFragments(const QPainter::PixmapFragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::PixmapFragmentHints hints = PixmapFragmentHints())
void drawPoint(const QPointF &position)
void drawPoint(const QPoint &position)
void drawPoint(int x, int y)
void drawPoints(const QPointF *points, int pointCount)
void drawPoints(const QPolygon &points)
void drawPoints(const QPolygonF &points)
void drawPoints(const QPoint *points, int pointCount)
void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill)
void drawPolyline(const QPointF *points, int pointCount)
void drawPolyline(const QPolygon &points)
void drawPolyline(const QPolygonF &points)
void drawPolyline(const QPoint *points, int pointCount)
void drawRect(const QRectF &rectangle)
void drawRect(const QRect &rectangle)
void drawRect(int x, int y, int width, int height)
void drawRects(const QRectF *rectangles, int rectCount)
void drawRects(const QList<QRect> &rectangles)
void drawRects(const QList<QRectF> &rectangles)
void drawRects(const QRect *rectangles, int rectCount)
void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
void drawStaticText(const QPointF &topLeftPosition, const QStaticText &staticText)
void drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)
void drawStaticText(int left, int top, 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(int x, int y, const QString &text)
void drawText(const QRect &rectangle, int flags, const QString &text, QRect *boundingRect = nullptr)
void drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)
void drawText(int x, int y, int width, int height, int flags, 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(int x, int y, int width, int height, const QPixmap &pixmap, int sx = 0, int sy = 0)
bool end()
void endNativePainting()
void eraseRect(const QRectF &rectangle)
void eraseRect(const QRect &rectangle)
void eraseRect(int x, int y, int width, int height)
void fillPath(const QPainterPath &path, const QBrush &brush)
void fillRect(const QRectF &rectangle, const QBrush &brush)
void fillRect(const QRect &rectangle, QGradient::프리셋 프리셋)
void fillRect(const QRect &rectangle, Qt::BrushStyle style)
void fillRect(const QRect &rectangle, Qt::GlobalColor color)
void fillRect(const QRect &rectangle, const QBrush &brush)
void fillRect(const QRect &rectangle, const QColor &color)
void fillRect(const QRectF &rectangle, QGradient::프리셋 프리셋)
void fillRect(const QRectF &rectangle, Qt::BrushStyle style)
void fillRect(const QRectF &rectangle, Qt::GlobalColor color)
void fillRect(const QRectF &rectangle, const QColor &color)
void fillRect(int x, int y, int width, int height, QGradient::Preset 사전 설정)
void fillRect(int x, int y, int width, int height, Qt::BrushStyle style)
void fillRect(int x, int y, int width, int height, Qt::GlobalColor color)
void fillRect(int x, int y, int width, int height, const QBrush &brush)
void fillRect(int x, int y, int width, int height, 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(큐리얼 각도)
void save()
void scale(qreal sx, qreal sy)
void setBackground(const Q브러시 &브러시)
void setBackgroundMode(Qt::BGMode 모드)
void setBrush(const QBrush &브러시)
void setBrush(Qt::BrushStyle 스타일)
void setBrushOrigin(const QPointF &position)
void setBrushOrigin(const QPoint &position)
void setBrushOrigin(int x, int y)
void setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRect(int x, int y, int width, int height, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)
void setClipRegion(const QRegion &region, Qt::ClipOperation 연산 = Qt::ReplaceClip)
void setClipping(bool enable)
void setCompositionMode(QPainter::CompositionMode 모드)
void setFont(const QFont &font)
void setLayoutDirection(Qt::LayoutDirection 방향)
void setOpacity(Qreal 오파시티)
void setPen(const QPen &pen)
void setPen(Qt::PenStyle 스타일)
void setPen(const QColor &color)
void setRenderHint(QPainter::RenderHint 힌트, bool on = true)
void setRenderHints(QPainter::RenderHints 힌트, bool on = true)
void setTransform(const QTransform &transform, bool 결합 = false)
void setViewTransformEnabled(bool enable)
void setViewport(const QRect &rectangle)
void setViewport(int x, int y, int width, int height)
void setWindow(const QRect &rectangle)
void setWindow(int x, int y, int width, int height)
void setWorldMatrixEnabled(bool enable)
void setWorldTransform(const QTransform &matrix, bool 결합 = false)
void shear(qreal sh, qreal sv)
void strokePath(const QPainterPath &path, const QPen &pen)
bool testRenderHint(QPainter::RenderHint 힌트) const
const QTransform &transform() const
void translate(const QPointF &offset)
void translate(const QPoint &offset)
void translate(Qreal DX, Qreal DY)
bool viewTransformEnabled() const
QRect viewport() const
QRect window() const
bool worldMatrixEnabled() const
const QTransform &worldTransform() const

상세 설명

QPainter는 GUI 프로그램에 필요한 대부분의 그리기 작업을 수행할 수 있도록 고도로 최적화된 기능을 제공합니다. 간단한 선부터 파이와 코드 같은 복잡한 도형까지 모든 것을 그릴 수 있습니다. 또한 정렬된 텍스트와 픽스맵도 그릴 수 있습니다. 일반적으로 "자연스러운" 좌표계로 그리지만 뷰와 월드 변환도 가능합니다. QPainter는 QPaintDevice 클래스를 상속하는 모든 객체에서 작동할 수 있습니다.

QPainter는 위젯의 페인트 이벤트 내에서 일반적으로 사용됩니다: 페인터를 구성하고 사용자 지정합니다(예: 펜 또는 브러시 설정). 그런 다음 그립니다. 그림을 그린 후에는 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 () 함수와 소멸자는 이를 비활성화합니다.

QPaintDeviceQPaintEngine 클래스와 함께 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() 등 대부분의 프리미티브를 그리는 함수를 제공합니다. 두 가지 편의 함수인 drawRects() 및 drawLines()는 현재 펜과 브러시를 사용하여 QRects 또는 QLines 의 지정된 배열에 지정된 수의 직사각형 또는 선을 그립니다.

QPainter 클래스는 또한 주어진 QRect 을 주어진 QBrush 으로 채우는 fillRect() 함수와 주어진 사각형 내부의 영역을 지우는 eraseRect() 함수를 제공합니다.

이 모든 함수는 정수 버전과 부동 소수점 버전이 모두 있습니다.

기본 그리기 예제

기본 그리기 예제는 QPainter 클래스를 사용하여 기본 그래픽 프리미티브를 다양한 스타일로 표시하는 방법을 보여줍니다.

복잡한 모양을 그려야 하는 경우, 특히 반복적으로 그려야 하는 경우 QPainterPath 를 만들고 drawPath()를 사용하여 그리는 것을 고려해 보세요.

페인터 경로 예제

QPainterPath 클래스는 페인팅 작업을 위한 컨테이너를 제공하여 그래픽 모양을 만들고 재사용할 수 있도록 합니다.

페인터 경로 예제는 페인터 경로를 사용하여 렌더링할 복잡한 모양을 만드는 방법을 보여줍니다.

QPainter는 지정된 QPainterPath 을 지정된 QBrush 으로 채우는 fillPath() 함수와 지정된 경로의 윤곽을 그리는(즉, 경로를 획으로 그리는) strokePath() 함수도 제공합니다.

또한 고급 벡터 기법을 사용하여 QPainterPath 를 사용하여 텍스트를 그리는 방법을 보여주는 벡터 변형 예제, Qt에서 사용할 수 있는 다양한 유형의 그라데이션을 보여주는 그라데이션 예제, Qt의 내장 대시 패턴을 보여주고 사용자 정의 패턴을 사용하여 사용 가능한 패턴의 범위를 확장하는 방법을 보여주는 패스 스트로킹 예제를 참조하십시오.

텍스트 그리기는 drawText()를 사용하여 수행됩니다. 세밀한 위치 지정이 필요한 경우 boundingRect()는 지정된 drawText() 명령이 그려질 위치를 알려줍니다.

픽스맵 및 이미지 그리기

drawPixmap(), drawImage() 및 drawTiledPixmap()와 같이 픽스맵/이미지를 그리는 함수가 있습니다. drawPixmap ()와 drawImage()는 모두 동일한 결과를 생성하지만 화면에서는 drawPixmap()가 더 빠른 반면 drawImage()는 QPrinter 또는 기타 디바이스에서 더 빠를 수 있습니다.

전체 QPicture 의 내용을 그리는 drawPicture() 함수가 있습니다. 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 렌더링 힌트와 함께 사용됩니다.

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
동심원을 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 열거형을 제공하며, 이는 한 이미지의 픽셀(소스)을 다른 이미지의 픽셀(대상)과 결합하는 모델을 설명합니다.

가장 일반적인 두 가지 합성 형태는 SourceSourceOver 입니다. Source 는 페인트 장치에 불투명한 물체를 그리는 데 사용됩니다. 이 모드에서는 소스의 각 픽셀이 대상의 해당 픽셀을 대체합니다. SourceOver 구도 모드에서는 소스 개체가 투명하고 대상 위에 그려집니다.

컴포지션 변환은 픽셀 단위로 작동합니다. 따라서 그래픽 프리미티브 자체와 그 경계 직사각형을 사용하는 것에는 차이가 있습니다: 바운딩 사각형에는 알파 == 0인 픽셀(즉, 프리미티브를 둘러싼 픽셀)이 포함됩니다. 이러한 픽셀은 다른 이미지의 픽셀을 덮어쓰므로 효과적으로 픽셀을 지우는 반면, 프리미티브는 자신의 영역만 덮어씁니다.

컴포지션 모드 예시

Qt의 예제 디렉토리에 있는 컴포지션 모드 예제를 사용하면 다양한 컴포지션 모드를 실험하고 결과를 즉시 확인할 수 있습니다.

제한 사항

Qt의 래스터 기반 페인트 엔진에서 좌표를 사용하는 경우 +/-215보다 큰 좌표를 사용할 수 있지만 이 범위를 벗어난 좌표로 페인팅을 수행하면 그림이 클리핑될 수 있다는 점에 유의해야 합니다. 이는 구현에서 short int 을 사용했기 때문입니다.

Qt의 스트로커가 생성하는 윤곽선은 곡선 모양을 다룰 때 근사치일 뿐입니다. 대부분의 경우 다른 베지어 커브 세그먼트를 사용하여 베지어 커브 세그먼트의 윤곽을 표현하는 것은 불가능하기 때문에 Qt는 여러 개의 작은 커브를 사용하여 커브 윤곽을 근사화합니다. 성능상의 이유로 Qt가 이러한 윤곽선에 사용하는 커브 수에는 제한이 있으므로 큰 펜 너비나 스케일을 사용하면 윤곽선 오차가 증가합니다. 오차가 작은 윤곽선을 생성하려면 사용자가 오차 허용 오차를 지정할 수 있는 setCurveThreshold 멤버 함수가 있는 QPainterPathStroker 클래스를 사용할 수 있습니다. 또 다른 해결 방법은 경로를 다각형으로 먼저 변환한 다음 다각형을 그리는 것입니다.

성능

QPainter는 개발자가 그라디언트, 컴포지션 모드 및 벡터 그래픽과 같은 다양한 그래픽 작업을 수행할 수 있는 풍부한 프레임워크입니다. 그리고 QPainter는 다양한 하드웨어 및 소프트웨어 스택에서 이러한 작업을 수행할 수 있습니다. 당연히 하드웨어와 소프트웨어의 기본 조합은 성능에 영향을 미치며, 컴포지션 모드, 브러시, 클리핑, 변환 등의 다양한 조합을 모두 조합하여 모든 단일 작업을 빠르게 수행하는 것은 순열의 수 때문에 거의 불가능한 작업에 가깝습니다. 타협안으로 주어진 하드웨어와 소프트웨어의 조합에 대해 합리적으로 얻을 수 있는 만큼의 성능을 보장하는 QPainter API와 백엔드의 하위 집합을 선택했습니다.

우리가 고성능 엔진으로 집중하는 백엔드는 다음과 같습니다:

  • 래스터 - 이 백엔드는 모든 렌더링을 순수 소프트웨어로 구현하며 항상 QImages로 렌더링하는 데 사용됩니다. 최적의 성능을 위해 QImage::Format_ARGB32_Premultiplied, QImage::Format_RGB32 또는 QImage::Format_RGB16 형식만 사용하세요. QImage::Format_ARGB32 을 포함한 다른 형식은 성능이 현저히 떨어집니다. 이 엔진은 QWidgetQPixmap 에 기본적으로 사용됩니다.
  • OpenGL 2.0(ES) - 이 백엔드는 하드웨어 가속 그래픽을 위한 기본 백엔드입니다. 데스크톱 컴퓨터와 OpenGL 2.0 또는 OpenGL/ES 2.0 사양을 지원하는 임베디드 디바이스에서 실행할 수 있습니다. 여기에는 지난 몇 년 동안 생산된 대부분의 그래픽 칩이 포함됩니다. 이 엔진은 QPainter를 사용하여 QOpenGLWidget 에서 활성화할 수 있습니다.

이러한 작업은 다음과 같습니다:

  • 간단한 변환, 즉 이동 및 크기 조정과 0, 90, 180, 270도 회전.
  • drawPixmap() 단순 변환 및 불투명도와 함께 비부드러운 변환 모드(QPainter::SmoothPixmapTransform 렌더링 힌트로 활성화되지 않음)를 사용할 수 있습니다.
  • 단색, 2색 선형 그라데이션 및 간단한 변형으로 직사각형 채우기.
  • 간단한 변형과 교차 클립을 사용한 직사각형 클리핑.
  • 컴포지션 모드 QPainter::CompositionMode_SourceQPainter::CompositionMode_SourceOver.
  • 단색 및 2색 선형 그라데이션 채우기를 사용한 둥근 직사각형 채우기.
  • 3x3 패치된 픽스맵 qDrawBorderPixmap.

이 목록은 성능이 중요한 애플리케이션에서 어떤 기능을 안전하게 사용할 수 있는지 알려줍니다. 특정 설정의 경우 다른 작업도 빠를 수 있지만 광범위하게 사용하기 전에 소프트웨어가 최종적으로 실행될 시스템에서 벤치마크하고 검증하는 것이 좋습니다. 또한 결과가 QPixmap 에 캐시되는 경우와 같이 비싼 연산을 사용해도 괜찮은 경우도 있습니다.

QPaintDevice, QPaintEngine, Qt SVG, 기본 드로잉 예제Drawing Utility Functions 를 참조하세요.

멤버 유형 문서

enum QPainter::CompositionMode

디지털 이미지 합성에 지원되는 모드를 정의합니다. 합성 모드는 한 이미지의 픽셀(소스)을 다른 이미지의 픽셀(대상)과 병합하는 방법을 지정하는 데 사용됩니다.

RasterOp 접두사로 표시되는 비트 단위 래스터 작업 모드는 X11 및 래스터 페인트 엔진에서만 기본적으로 지원된다는 점에 유의하세요. 즉, Mac에서 이러한 모드를 사용할 수 있는 유일한 방법은 QImage. 알파 구성 요소가 있는 펜 및 브러시에는 RasterOp로 표시된 혼합 모드가 지원되지 않습니다. 또한 QPainter::Antialiasing 렌더링 힌트를 켜면 RasterOp 모드가 효과적으로 비활성화됩니다.

가장 일반적인 유형은 소스의 알파 구성 요소가 픽셀의 반투명도를 정의하는 방식으로 소스 픽셀이 대상 픽셀 위에 블렌딩되는 소스오버(종종 알파 블렌딩이라고도 함)입니다.

여러 컴포지션 모드에서 효과를 적용하려면 소스 또는 대상 이미지에 알파 채널이 필요합니다. 최적의 성능을 위해 이미지 형식 Format_ARGB32_Premultiplied 이 선호됩니다.

컴포지션 모드를 설정하면 모든 페인팅 연산자, 펜, 브러시, 그라디언트 및 픽셀맵/이미지 그리기에 적용됩니다.

상수설명
QPainter::CompositionMode_SourceOver0기본 모드입니다. 소스의 알파는 대상 위에 픽셀을 블렌딩하는 데 사용됩니다.
QPainter::CompositionMode_DestinationOver1대상의 알파는 소스 픽셀 위에 대상 픽셀을 블렌딩하는 데 사용됩니다. 이 모드는 CompositionMode_SourceOver의 역입니다.
QPainter::CompositionMode_Clear2대상의 픽셀은 소스와 관계없이 지워집니다(완전 투명으로 설정).
QPainter::CompositionMode_Source3출력은 소스 픽셀입니다. (이는 기본 복사 작업을 의미하며 소스 픽셀이 불투명할 때 SourceOver와 동일합니다).
QPainter::CompositionMode_Destination4출력은 대상 픽셀입니다. 즉, 블렌딩이 적용되지 않습니다. 이 모드는 CompositionMode_Source의 역입니다.
QPainter::CompositionMode_SourceIn5출력은 소스이며, 알파는 대상의 알파만큼 감소합니다.
QPainter::CompositionMode_DestinationIn6출력은 소스의 알파가 대상의 알파만큼 감소된 대상입니다. 이 모드는 CompositionMode_SourceIn의 역입니다.
QPainter::CompositionMode_SourceOut7출력은 소스이며, 여기서 알파는 대상의 역수만큼 감소합니다.
QPainter::CompositionMode_DestinationOut8출력은 알파가 소스의 역수만큼 줄어든 대상입니다. 이 모드는 CompositionMode_SourceOut의 역수입니다.
QPainter::CompositionMode_SourceAtop9소스 픽셀은 대상 픽셀 위에 블렌딩되며, 소스 픽셀의 알파는 대상 픽셀의 알파만큼 감소합니다.
QPainter::CompositionMode_DestinationAtop10대상 픽셀이 소스 위에 블렌딩되며, 대상 픽셀의 알파가 소스 픽셀의 알파만큼 감소합니다. 이 모드는 CompositionMode_SourceAtop의 역입니다.
QPainter::CompositionMode_Xor11대상 알파의 역수만큼 알파가 줄어든 소스는 소스 알파의 역수만큼 알파가 줄어든 대상과 병합됩니다. CompositionMode_Xor는 비트 단위의 Xor와 동일하지 않습니다.
QPainter::CompositionMode_Plus12소스 및 대상 픽셀의 알파와 색상이 모두 합산됩니다.
QPainter::CompositionMode_Multiply13출력은 소스 색에 대상 색을 곱한 값입니다. 색상에 흰색을 곱하면 색상이 변경되지 않고, 색상에 검은색을 곱하면 검은색이 생성됩니다.
QPainter::CompositionMode_Screen14소스 색상과 대상 색상이 반전된 다음 곱해집니다. 색상을 흰색으로 스크리닝하면 흰색이 생성되고 색상을 검정으로 스크리닝하면 색상이 변경되지 않습니다.
QPainter::CompositionMode_Overlay15대상 색에 따라 색을 곱하거나 스크린합니다. 대상 색상은 소스 색상과 혼합되어 대상의 밝기 또는 어두움을 반영합니다.
QPainter::CompositionMode_Darken16소스 색상과 대상 색상 중 더 어두운 색이 선택됩니다.
QPainter::CompositionMode_Lighten17소스 색상과 대상 색상 중 더 밝은 색이 선택됩니다.
QPainter::CompositionMode_ColorDodge18대상 색이 밝아져 소스 색을 반영합니다. 소스 색상이 검은색이면 대상 색상은 변경되지 않습니다.
QPainter::CompositionMode_ColorBurn19소스 색을 반영하여 대상 색이 어두워집니다. 흰색 소스 색은 대상 색을 변경하지 않습니다.
QPainter::CompositionMode_HardLight20소스 색에 따라 색을 곱하거나 가립니다. 밝은 소스 색은 대상 색을 밝게 하고, 어두운 소스 색은 대상 색을 어둡게 합니다.
QPainter::CompositionMode_SoftLight21소스 색에 따라 색을 어둡게 또는 밝게 합니다. CompositionMode_HardLight와 유사합니다.
QPainter::CompositionMode_Difference22밝은 색에서 어두운 색을 뺍니다. 흰색으로 칠하면 대상 색이 반전되고 검은색으로 칠하면 대상 색이 그대로 유지됩니다.
QPainter::CompositionMode_Exclusion23CompositionMode_Difference와 비슷하지만 대비가 더 낮습니다. 흰색으로 칠하면 대상 색상이 반전되는 반면 검은색으로 칠하면 대상 색상이 변경되지 않습니다.
QPainter::RasterOp_SourceOrDestination24소스 및 대상 픽셀에 대해 비트 단위 OR 연산을 수행합니다(src 또는 dst).
QPainter::RasterOp_SourceAndDestination25소스 및 대상 픽셀에 대해 비트 단위 AND 연산을 수행합니다(src AND dst).
QPainter::RasterOp_SourceXorDestination26소스 및 대상 픽셀에 대해 비트 단위 XOR 연산을 수행합니다(src XOR dst).
QPainter::RasterOp_NotSourceAndNotDestination27소스 및 대상 픽셀에 대해 비트 단위 NOR 연산을 수행합니다((NOT src) AND (NOT dst)).
QPainter::RasterOp_NotSourceOrNotDestination28소스 및 대상 픽셀에 대해 비트 단위 NAND 연산을 수행합니다((NOT src) 또는 (NOT dst)).
QPainter::RasterOp_NotSourceXorDestination29소스 픽셀을 반전시킨 다음 대상 픽셀과 XOR하는 비트 단위 연산을 수행합니다((NOT src) XOR dst).
QPainter::RasterOp_NotSource30소스 픽셀이 반전되는 비트 단위 연산을 수행합니다(NOT src).
QPainter::RasterOp_NotSourceAndDestination31소스를 반전시킨 후 대상과 AND'ed하는 비트 연산((NOT src) AND dst)을 수행합니다.
QPainter::RasterOp_SourceAndNotDestination32소스가 반전된 대상 픽셀과 AND'된 비트 연산(src AND (NOT dst))을 수행합니다.
QPainter::RasterOp_NotSourceOrDestination33소스를 반전시킨 다음 대상 픽셀을 반전된 대상 픽셀과 OR'ed하는 비트 연산((NOT src) OR dst)을 수행합니다.
QPainter::RasterOp_ClearDestination35대상의 픽셀은 소스에 관계없이 지워집니다(0으로 설정).
QPainter::RasterOp_SetDestination36대상의 픽셀은 소스와 무관하게 설정(1로 설정)됩니다.
QPainter::RasterOp_NotDestination37대상 픽셀이 반전되는 비트 단위 연산을 수행합니다(dst가 아님).
QPainter::RasterOp_SourceOrNotDestination34소스가 반전된 대상 픽셀로 OR 연산되는 비트 단위 연산을 수행합니다(src OR (NOT dst)).

compositionMode(), setCompositionMode(), Composition Modes이미지 합성 예제를참조하십시오 .

열거형 QPainter::PixmapFragmentHint
플래그 QPainter::PixmapFragmentHints

Constant설명
QPainter::OpaqueHint0x01그려질 픽셀맵 조각이 불투명함을 나타냅니다. 불투명한 조각은 잠재적으로 그리는 속도가 더 빠릅니다.

PixmapFragmentHints 유형은 QFlags<PixmapFragmentHint>에 대한 typedef입니다. PixmapFragmentHint 값의 OR 조합을 저장합니다.

QPainter::drawPixmapFragments() 및 QPainter::PixmapFragment참조하십시오 .

열거형 QPainter::렌더 힌트
플래그 QPainter::렌더 힌트

렌더 힌트는 특정 엔진에서 존중할 수도 있고 그렇지 않을 수도 있는 플래그를 QPainter 에 지정하는 데 사용됩니다.

Constant설명
QPainter::Antialiasing0x01엔진이 가능하면 프리미티브의 가장자리를 안티앨리어싱할지 여부를 나타냅니다.
QPainter::TextAntialiasing0x02가능하면 엔진이 텍스트의 별칭을 변경하지 않도록 합니다. 텍스트에 대한 앤티앨리어싱을 강제로 비활성화하려면 이 힌트를 사용하지 마세요. 대신 글꼴의 스타일 전략에 QFont::NoAntialias 을 설정하세요.
QPainter::SmoothPixmapTransform0x04엔진이 가장 가까운 이웃이 아닌 부드러운 픽셀맵 변환 알고리즘(예: 이중선형)을 사용해야 함을 나타냅니다.
QPainter::VerticalSubpixelPositioning0x08글꼴 엔진에서 지원하는 경우 텍스트를 가로뿐만 아니라 세로도 픽셀 단위로 배치할 수 있도록 허용합니다. 이 기능은 현재 모든 플랫폼에서 힌트 기본 설정이 QFont::PreferNoHinting 인 경우 프리타입에서 지원되며 macOS에서도 지원됩니다. 대부분의 사용 사례에서 시각적 품질은 향상되지 않지만 메모리 사용량이 증가하고 텍스트 렌더링 성능이 약간 저하될 수 있습니다. 따라서 사용 사례에 꼭 필요한 경우가 아니라면 이 옵션을 활성화하지 않는 것이 좋습니다. 그러한 사용 사례 중 하나는 글리프를 다른 시각적 프리미티브와 정렬하는 것입니다. 이 값은 Qt 6.1에 추가되었습니다.
QPainter::LosslessImageRendering0x40가능하면 무손실 이미지 렌더링을 사용하세요. QPainter 현재 이 힌트는 QPrinter 또는 QPdfWriter 를 통해 PDF 파일을 출력할 때 drawImage()/drawPixmap() 호출이 손실 JPEG 압축 대신 무손실 압축 알고리즘을 사용하여 이미지를 인코딩하는 경우에만 사용됩니다. 이 값은 Qt 5.13에 추가되었습니다.
QPainter::NonCosmeticBrushPatterns0x80미리 정의된 패턴 스타일 중 하나를 사용하여 브러시로 칠할 때는 칠하는 대상과 함께 패턴도 변형합니다. 기본값은 패턴을 장식용으로 처리하여 패턴 픽셀이 활성 변환과 무관하게 장치 픽셀에 직접 매핑되도록 하는 것입니다. 이 값은 Qt 6.4에 추가되었습니다.

RenderHints 유형은 QFlags<RenderHint>에 대한 typedef입니다. RenderHint 값의 OR 조합을 저장합니다.

renderHints(), setRenderHint() 및 Rendering Quality참조하십시오 .

멤버 함수 문서

QPainter::QPainter()

화가를 만듭니다.

begin() 및 end()도 참조하세요 .

[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()을 사용해야 합니다.

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 을 반환합니다.

시작()이 호출되면 모든 페인터 설정(setPen(), setBrush() 등)이 기본값으로 재설정된다는 점에 유의하세요.

발생할 수 있는 오류는 다음과 같은 심각한 문제입니다:

painter->begin(0); // impossible - paint device cannot be 0

QPixmap image(0, 0);
painter->begin(&image); // impossible - image.isNull() == true;

painter->begin(myWidget);
painter2->begin(myWidget); // impossible - only one painter at a time

대부분의 경우 start() 대신 생성자 중 하나를 사용할 수 있으며 end()는 소멸 시 자동으로 수행된다는 점에 유의하세요.

경고: 페인트 장치는 한 번에 한 명의 페인터만 칠할 수 있습니다.

경고: QImage::Format_Indexed8 형식의 QImage 페인팅은 지원되지 않습니다.

end() 및 QPainter()도 참조하세요 .

void QPainter::beginNativePainting()

페인팅 파이프라인을 플러시하고 사용자가 기본 그래픽 컨텍스트에 직접 명령을 내릴 수 있도록 준비합니다. endNativePainting () 호출이 뒤따라야 합니다.

기본 페인트 엔진이 변경하는 상태만 각각의 기본 상태로 재설정된다는 점에 유의하세요. 재설정되는 상태는 릴리스마다 변경될 수 있습니다. 현재 OpenGL 2 엔진에서 재설정되는 상태는 다음과 같습니다:

  • 블렌딩이 비활성화됨
  • 깊이, 스텐실 및 가위 테스트가 비활성화됩니다.
  • 활성 텍스처 단위가 0으로 재설정됩니다.
  • 뎁스 마스크, 뎁스 함수 및 클리어 뎁스가 기본값으로 재설정됩니다.
  • 스텐실 마스크, 스텐실 작업 및 스텐실 기능이 기본값으로 재설정됩니다.
  • 현재 색이 단색 흰색으로 재설정됩니다.

예를 들어 사용자가 startNativePaint()/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)

현재 설정된 font()를 사용하여 지정된 flags 을 사용하여 지정된 rectangle 안에 그려질 때 나타나는 text 의 경계 사각형을 반환합니다. 즉, 이 함수는 동일한 인수가 주어질 때 drawText() 함수가 그려질 위치를 알려줍니다.

지정된 flags 을 사용하여 지정된 rectangle 안에 text 이 맞지 않으면 이 함수는 필요한 사각형을 반환합니다.

flags 인수는 다음 플래그의 비트 단위 OR입니다:

가로 정렬 플래그 중 여러 개 또는 세로 정렬 플래그 중 여러 개가 설정된 경우 결과 정렬은 정의되지 않습니다.

drawText(), Qt::Alignment, Qt::TextFlag도 참조하세요 .

QRect QPainter::boundingRect(const QRect &rectangle, int flags, const QString &text)

이 함수는 오버로드된 함수입니다.

현재 설정된 font()를 사용하여 지정된 flags 을 사용하여 지정된 rectangle 안에 그려졌을 때 나타나는 text 의 경계 사각형을 반환합니다.

QRectF QPainter::boundingRect(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())

이 함수는 오버로드된 함수입니다.

이 오버로드된 함수는 플래그를 Qt::AlignmentFlagQt::TextFlag 의 비트 단위 OR로 지정하는 대신 option 인수를 받습니다. QTextOption 클래스는 일반적인 서식 있는 텍스트 속성에 대한 설명을 제공합니다.

QTextOption참조하세요 .

QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)

이 함수는 오버로드된 함수입니다.

주어진 text 의 경계 사각형을 너비 w, 높이 h 의 점 (x, y)에서 시작하여 사각형 내부에 그릴 때 나타나는 모양을 반환합니다 .

const QBrush &QPainter::brush() const

화가의 현재 브러시를 반환합니다.

QPainter::setBrush() 및 Settings도 참조하세요 .

QPoint QPainter::brushOrigin() const

현재 설정된 브러시 원점을 반환합니다.

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

현재 컴포지션 모드를 반환합니다.

CompositionModesetCompositionMode()도 참조하세요 .

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, startAnglespanAngle 에 의해 정의된 호를 그립니다.

startAnglespanAngle 은 1/16도, 즉 전체 원은 5760(16 * 360)으로 지정해야 합니다. 각도의 양수 값은 시계 반대 방향을 의미하고 음수 값은 시계 방향을 의미합니다. 0도는 3시 위치에 있습니다.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawArc(rectangle, startAngle, spanAngle);

drawPie(), drawChord() 및 좌표계를참조하세요 .

void QPainter::drawArc(const QRect &rectangle, int startAngle, int spanAngle)

이것은 오버로드된 함수입니다.

주어진 rectangle, startAnglespanAngle 에 의해 정의된 호를 그립니다.

void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle)

이 함수는 오버로드된 함수입니다.

지정된 widthheight 과 지정된 startAnglespanAngle 을 사용하여 (x, y)에서 시작하는 직사각형으로 정의된 호를 그립니다.

void QPainter::drawChord(const QRectF &rectangle, int startAngle, int spanAngle)

주어진 rectangle, startAnglespanAngle 에 의해 정의된 코드를 그립니다. 현은 현재 brush()로 채워집니다.

시작각과 스팬각은 1/16도 단위로 지정해야 합니다. 즉, 전체 원은 5760(16 * 360)과 같습니다. 각도의 양수 값은 시계 반대 방향을 의미하고 음수 값은 시계 방향을 의미합니다. 0도는 3시 위치에 있습니다.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawChord(rect, startAngle, spanAngle);

drawArc(), drawPie() 및 좌표계를참조하십시오 .

void QPainter::drawChord(const QRect &rectangle, int startAngle, int spanAngle)

이것은 오버로드된 함수입니다.

주어진 rectangle, startAnglespanAngle 에 정의된 코드를 그립니다.

void QPainter::drawChord(int x, int y, int width, int height, int startAngle, int spanAngle)

이 함수는 오버로드된 함수입니다.

(x, y)에서 시작하는 직사각형으로 정의된 코드와 지정된 widthheight, 주어진 startAnglespanAngle 를 그립니다.

void QPainter::drawConvexPolygon(const QPointF *points, int pointCount)

현재 펜을 사용하여 points 배열의 첫 번째 pointCount 점으로 정의된 볼록 다각형을 그립니다.

static const QPointF points[4] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
    QPointF(90.0, 70.0)
};

QPainter painter(this);
painter.drawConvexPolygon(points, 4);

첫 번째 점은 마지막 점과 암시적으로 연결되며 다각형은 현재 brush()로 채워집니다. 제공된 다각형이 볼록하지 않은 경우(즉, 180도보다 큰 각도가 하나 이상 포함된 경우) 결과는 정의되지 않습니다.

일부 플랫폼(예: 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()에 펜 너비를 더한 값입니다.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawEllipse(rectangle);

drawPie() 및 좌표계를참조하세요 .

void QPainter::drawEllipse(const QRect &rectangle)

이것은 오버로드된 함수입니다.

주어진 rectangle 에 정의된 타원을 그립니다.

void QPainter::drawEllipse(const QPoint &center, int rx, int ry)

이 함수는 오버로드된 함수입니다.

반경이 rxrycenter 에 위치한 타원을 그립니다.

void QPainter::drawEllipse(const QPointF &center, qreal rx, qreal ry)

이 함수는 오버로드된 함수입니다.

반경이 rxrycenter 에 위치한 타원을 그립니다.

void QPainter::drawEllipse(int x, int y, int width, int height)

이 함수는 오버로드된 함수입니다.

주어진 widthheight 을 사용하여 (x, y)에서 시작하는 직사각형으로 정의된 타원을 그립니다.

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 을 사용하여 원하는 방식을 지정하세요.

QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QImage image(":/images/myImage.png");

QPainter painter(this);
painter.drawImage(target, image, source);

drawPixmap() 및 QImage::devicePixelRatio()도 참조하세요 .

void QPainter::drawImage(const QPoint &point, const QImage &image)

이것은 오버로드된 함수입니다.

주어진 point 에서 주어진 image 을 그립니다.

void QPainter::drawImage(const QPointF &point, const QImage &image)

이것은 오버로드된 함수입니다.

주어진 point 에서 주어진 image 을 그립니다.

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 에 정의된 선을 그립니다.

QLineF line(10.0, 80.0, 90.0, 20.0);

QPainter painter(this);
painter.drawLine(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 를 그립니다.

QPainterPath path;
path.moveTo(20, 80);
path.lineTo(20, 30);
path.cubicTo(80, 0, 50, 50, 80, 80);

QPainter painter(this);
painter.drawPath(path);

페인터 경로 예제와 벡터 변형 예제를참조하세요 .

void QPainter::drawPicture(const QPointF &point, const QPicture &picture)

주어진 point 에서 주어진 picture 을 재생합니다.

QPicture 클래스는 QPainter 명령을 기록하고 재생하는 페인트 장치입니다. 그림은 페인터 명령을 플랫폼에 독립적인 형식으로 IO 디바이스에 직렬화합니다. 위젯이나 픽셀맵에 그릴 수 있는 모든 것을 그림에 저장할 수도 있습니다.

이 함수는 point = QPointF(0, 0)으로 호출할 때 QPicture::play()와 정확히 동일한 작업을 수행합니다.

참고: 이 함수를 사용하면 페인터의 상태가 보존됩니다.

QPicture picture;
QPointF point(10.0, 20.0);
picture.load("drawing.pic");

QPainter painter(this);
painter.drawPicture(0, 0, picture);

QPicture::play()도 참조하세요 .

void QPainter::drawPicture(const QPoint &point, const QPicture &picture)

이 함수는 과부하된 함수입니다.

주어진 point 에서 주어진 picture 을 재생합니다.

void QPainter::drawPicture(int x, int y, const QPicture &picture)

이것은 과부하 함수입니다.

주어진 picture 을 지점 (x, y)에 그립니다.

void QPainter::drawPie(const QRectF &rectangle, int startAngle, int spanAngle)

주어진 rectangle, startAnglespanAngle 로 정의된 파이를 그립니다.

파이는 현재 brush()로 채워집니다.

시작각과 범위각은 1/16도 단위로 지정해야 합니다(예: 전체 원은 5760(16 * 360)입니다). 각도의 양수 값은 시계 반대 방향을 의미하고 음수 값은 시계 방향을 의미합니다. 0도는 3시 위치에 있습니다.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;

QPainter painter(this);
painter.drawPie(rectangle, startAngle, spanAngle);

drawEllipse(), drawChord() 및 좌표계를참조하십시오 .

void QPainter::drawPie(const QRect &rectangle, int startAngle, int spanAngle)

이것은 오버로드된 함수입니다.

주어진 rectangle, startAnglespanAngle 로 정의된 파이를 그립니다.

void QPainter::drawPie(int x, int y, int width, int height, int startAngle, int spanAngle)

이 함수는 오버로드된 함수입니다.

지정된 widthheight 과 주어진 startAnglespanAngle 을 사용하여 (x, y)에서 시작하는 직사각형으로 정의된 파이를 그립니다.

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 을 참조하세요.

QRectF target(10.0, 20.0, 80.0, 60.0);
QRectF source(0.0, 0.0, 70.0, 40.0);
QPixmap pixmap(":myPixmap.png");

QPainter painter(this);
painter.drawPixmap(target, pixmap, source);

pixmapQBitmap 인 경우 펜 색상을 사용하여 "설정"된 비트로 그려집니다. backgroundModeQt::OpaqueMode 인 경우 "설정되지 않은" 비트는 배경 브러시 색상을 사용하여 그려지고 backgroundModeQt::TransparentMode 인 경우 "설정되지 않은" 비트는 투명하게 그려집니다. 그라데이션 또는 텍스처 색상으로 비트맵을 그리는 것은 지원되지 않습니다.

drawImage() 및 QPixmap::devicePixelRatio()도 참조하세요 .

void QPainter::drawPixmap(const QPoint &point, const QPixmap &pixmap)

이것은 오버로드된 함수입니다.

주어진 point 을 원점으로 하여 주어진 pixmap 을 그립니다.

void QPainter::drawPixmap(const QPointF &point, const QPixmap &pixmap)

이것은 오버로드된 함수입니다.

주어진 point 을 원점으로 하여 주어진 pixmap 을 그립니다.

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)

이 함수는 오버로드된 함수입니다.

주어진 widthheight 를 사용하여 pixmap 를 위치 (x, y)의 직사각형에 그립니다.

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::PixmapFragmentQPainter::PixmapFragmentHint참조하세요 .

void QPainter::drawPoint(const QPointF &position)

현재 펜의 색을 사용하여 지정된 position 에 단일 점을 그립니다.

좌표계도참조하세요 .

void QPainter::drawPoint(const QPoint &position)

이 함수는 오버로드된 함수입니다.

현재 펜의 색을 사용하여 지정된 position 에 단일 점을 그립니다.

void QPainter::drawPoint(int x, int y)

이 함수는 과부하된 함수입니다.

위치에 단일 점을 그립니다 (x, y).

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 점으로 정의된 다각형을 그립니다.

static const QPointF points[4] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
    QPointF(90.0, 70.0)
};

QPainter painter(this);
painter.drawPolygon(points, 4);

첫 번째 점은 마지막 점과 암시적으로 연결되며 다각형은 현재 brush()로 채워집니다.

fillRuleQt::WindingFill 인 경우 다각형은 와인딩 채우기 알고리즘을 사용하여 채워집니다. fillRuleQt::OddEvenFill 인 경우 다각형은 홀수 짝수 채우기 알고리즘을 사용하여 채워집니다. 이러한 채우기 규칙에 대한 자세한 설명은 Qt::FillRule 을 참조하세요.

drawConvexPolygon(), drawPolyline() 및 좌표계를참조하세요 .

void QPainter::drawPolygon(const QPolygon &points, Qt::FillRule fillRule = Qt::OddEvenFill)

이 함수는 오버로드된 함수입니다.

채우기 규칙 fillRule 을 사용하여 주어진 points 으로 정의된 다각형을 그립니다.

void QPainter::drawPolygon(const QPolygonF &points, Qt::FillRule fillRule = Qt::OddEvenFill)

이 함수는 오버로드된 함수입니다.

채우기 규칙 fillRule 을 사용하여 주어진 points 으로 정의된 다각형을 그립니다.

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() 함수와 달리 마지막 점이 첫 번째 점과 연결되지 않으며 폴리라인이 채워지지 않는다는 점에 유의하세요.

static const QPointF points[3] = {
    QPointF(10.0, 80.0),
    QPointF(20.0, 10.0),
    QPointF(80.0, 30.0),
};

QPainter painter(this);
painter.drawPolyline(points, 3);

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()에 펜 너비를 더한 값입니다.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawRect(rectangle);

drawRects(), drawPolygon() 및 좌표계를참조하세요 .

void QPainter::drawRect(const QRect &rectangle)

이 함수는 과부하된 함수입니다.

현재 펜과 브러시로 현재 rectangle 을 그립니다.

void QPainter::drawRect(int x, int y, int width, int height)

이 함수는 과부하된 함수입니다.

왼쪽 상단 모서리가 (x, y)이고 주어진 widthheight 으로 직사각형을 그립니다.

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 을 그립니다.

xRadiusyRadius 인수는 둥근 직사각형의 모서리를 정의하는 타원의 반지름을 지정합니다. modeQt::RelativeSize 인 경우 xRadiusyRadius 는 각각 직사각형 너비와 높이의 절반 비율로 지정되며 0.0에서 100.0 범위여야 합니다.

채워진 직사각형의 크기는 rect.size()입니다. 스트로크된 직사각형의 크기는 rect.size()에 펜 너비를 더한 값입니다.

QRectF rectangle(10.0, 20.0, 80.0, 60.0);

QPainter painter(this);
painter.drawRoundedRect(rectangle, 20.0, 15.0);

drawRect() 및 QPen참조하세요 .

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)

주어진 topLeftPosition 에 주어진 staticText 을 그립니다.

텍스트는 페인터에 설정된 글꼴과 변환을 사용하여 그려집니다. 페인터에 설정된 글꼴 및/또는 변환이 QStaticText 의 레이아웃을 초기화하는 데 사용된 글꼴 및/또는 변환과 다른 경우 레이아웃을 다시 계산해야 합니다. QStaticText::prepare ()를 사용하여 staticText 을 나중에 그려질 글꼴 및 변환으로 초기화합니다.

topLeftPositionstaticText 이 초기화되었을 때 또는 마지막으로 그려졌을 때와 같지 않은 경우 텍스트를 새 위치로 번역할 때 약간의 오버헤드가 발생합니다.

참고: 페인터의 변환이 아핀이 아닌 경우 drawText()에 대한 일반 호출을 사용하여 staticText 을 그리므로 성능 개선의 잠재력을 잃게 됩니다.

참고: Y 위치는 글꼴의 상단으로 사용됩니다.

QStaticText참조하세요 .

void QPainter::drawStaticText(const QPoint &topLeftPosition, const QStaticText &staticText)

이 함수는 과부하된 함수입니다.

topLeftPositionstaticText 을 그립니다.

참고: Y 위치는 글꼴의 상단으로 사용됩니다.

void QPainter::drawStaticText(int left, int top, const QStaticText &staticText)

이 함수는 과부하된 함수입니다.

좌표 lefttopstaticText 를 그립니다.

참고: Y 위치는 글꼴의 상단으로 사용됩니다.

void QPainter::drawText(const QPointF &position, const QString &text)

주어진 position 에서 시작하여 현재 정의된 텍스트 방향으로 주어진 text 을 그립니다.

이 함수는 텍스트를 여러 줄로 나눌 수 없으므로 개행 문자(\n)를 처리하지 않으며 개행 문자를 표시할 수 없습니다. 줄 바꿈 문자를 사용하여 여러 줄의 텍스트를 그리거나 텍스트를 줄 바꿈하려면 대신 직사각형을 취하는 QPainter::drawText() 오버로드를 사용하세요.

기본적으로 QPainter 은 텍스트를 앤티 앨리어싱 처리하여 그립니다.

참고: Y 위치는 글꼴의 기준선으로 사용됩니다.

setFont() 및 setPen()도 참조하세요 .

void QPainter::drawText(const QPoint &position, const QString &text)

이 함수는 오버로드된 함수입니다.

주어진 position 에서 시작하여 현재 정의된 텍스트 방향으로 주어진 text 을 그립니다.

기본적으로 QPainter 은 텍스트 앤티앨리어싱을 적용하여 그립니다.

참고: Y 위치는 글꼴의 기준선으로 사용됩니다.

setFont() 및 setPen()도 참조하세요 .

void QPainter::drawText(const QRectF &rectangle, const QString &text, const QTextOption &option = QTextOption())

이 함수는 오버로드된 함수입니다.

option 을 사용하여 지정된 rectangle 에 지정된 text 을 그려서 위치, 방향, 방향을 제어합니다. 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)

이 함수는 과부하된 함수입니다.

지정된 flags 에 따라 지정된 rectangle 내에 지정된 text 을 그립니다.

boundingRect (null이 아닌 경우)는 전체 텍스트를 둘러싸기 위해 경계 사각형이 있어야 하는 값으로 설정됩니다. 예를 들어, 다음 이미지에서 점선은 함수에 의해 계산된 boundingRect 을 나타내고 점선은 rectangle 을 나타냅니다:

QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);

const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);

QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));

pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));

기본적으로 QPainter 은 텍스트 앤티앨리어싱이 적용된 텍스트를 그립니다.

참고: rectangle 의 y 좌표는 글꼴의 상단으로 사용됩니다.

setFont() 및 setPen()도 참조하세요 .

void QPainter::drawText(const QRectF &rectangle, int flags, const QString &text, QRectF *boundingRect = nullptr)

이 함수는 과부하가 걸린 함수입니다.

제공된 rectangle 내에 주어진 text 을 그립니다. flags 정렬과 함께 rectangletext 의 앵커를 정의합니다.

QPainter painter(this);
painter.drawText(rect, Qt::AlignCenter, tr("Qt\nProject"));

boundingRect (null이 아닌 경우)는 전체 텍스트를 둘러싸기 위해 경계 사각형이 되어야 하는 값으로 설정됩니다. 예를 들어 다음 이미지에서 점선은 함수에 의해 계산된 boundingRect 을 나타내고 점선은 rectangle 을 나타냅니다:

QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);

const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);

QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));

pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));

flags 인수는 다음 플래그의 비트 단위 OR입니다:

기본적으로 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)

이 함수는 오버로드된 함수입니다.

원점 (x, y), widthheight 이 있는 사각형 안에 주어진 text 을 그립니다.

boundingRect (null이 아닌 경우)는 전체 텍스트를 둘러싸기 위해 경계 사각형이 있어야 하는 값으로 설정됩니다. 예를 들어, 다음 이미지에서 점선은 함수에 의해 계산된 boundingRect 을 나타내고 파선은 x, y, widthheight 에 의해 정의된 사각형을 나타냅니다:

QPainter painter(this);
QFont font = painter.font();
font.setPixelSize(48);
painter.setFont(font);

const QRect rectangle = QRect(0, 0, 100, 50);
QRect boundingRect;
painter.drawText(rectangle, 0, tr("Hello"), &boundingRect);

QPen pen = painter.pen();
pen.setStyle(Qt::DotLine);
painter.setPen(pen);
painter.drawRect(boundingRect.adjusted(0, 0, -pen.width(), -pen.width()));

pen.setStyle(Qt::DashLine);
painter.setPen(pen);
painter.drawRect(rectangle.adjusted(0, 0, -pen.width(), -pen.width()));

flags 인수는 다음 플래그의 비트 단위 OR입니다:

기본적으로 QPainter 은 텍스트 앤티 앨리어싱을 적용하여 그립니다.

참고: Y 위치는 글꼴의 상단으로 사용됩니다.

Qt::AlignmentFlag, Qt::TextFlag, setFont() 및 setPen()도 참조하세요 .

void QPainter::drawTiledPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QPointF &position = QPointF())

원점이 지정된 positionrectangle 안에 타일로 된 pixmap 을 그립니다.

drawTiledPixmap()을 호출하는 것은 drawPixmap()를 여러 번 호출하여 영역을 픽셀맵으로 채우는(타일링하는) 것과 비슷하지만, 기본 창 시스템에 따라 훨씬 더 효율적일 수 있습니다.

drawTiledPixmap()은 일반 dpi 디스플레이와 비교했을 때 고해상도 디스플레이(devicePixelRatio > 1)에서 동일한 시각적 타일링 패턴을 생성합니다. 타일 크기를 제어하려면 pixmap 에서 devicePixelRatio를 설정하세요. 예를 들어, 2로 설정하면 타일 너비와 높이가 절반으로 줄어들고(1x 및 2배 디스플레이 모두에서) 2배 디스플레이에서는 고해상도 출력이 생성됩니다.

position 오프셋은 디스플레이 장치 픽셀 비율과 무관하게 항상 페인터 좌표계에 있습니다.

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)는 페인트 장치에서 그려질 왼쪽 상단 지점을 지정합니다(지정된 widthheight 사용). (sx, sy)는 그려질 pixmap 의 왼쪽 상단 지점을 지정합니다(기본값은 (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)

이 함수는 오버로드된 함수입니다.

주어진 widthheight 을 사용하여 (x, y)에서 시작하는 직사각형 내부 영역을 지웁니다.

void QPainter::fillPath(const QPainterPath &path, const QBrush &brush)

주어진 brush 을 사용하여 주어진 path 을 채웁니다. 윤곽선은 그려지지 않습니다.

또는 QBrush 대신 QColor 을 지정할 수 있으며, QBrush 생성자( QColor 인수를 받음)는 자동으로 솔리드 패턴 브러시를 생성합니다.

drawPath()도 참조하세요 .

void QPainter::fillRect(const QRectF &rectangle, const QBrush &brush)

지정된 brush 을 지정된 rectangle 으로 채웁니다.

또는 QBrush 대신 QBrush 생성자( QColor 인수를 받음)가 자동으로 단색 패턴 브러시를 만들도록 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)

이 함수는 오버로드된 함수입니다.

주어진 그라데이션 preset 을 사용하여 (x, y)에서 시작하는 사각형을 주어진 widthheight 으로 채웁니다.

void QPainter::fillRect(int x, int y, int width, int height, Qt::BrushStyle style)

이 함수는 오버로드된 함수입니다.

지정된 브러시 style 를 사용하여 (x, y)에서 시작하는 사각형을 지정된 widthheight 로 채웁니다.

void QPainter::fillRect(int x, int y, int width, int height, Qt::GlobalColor color)

이것은 과부하 함수입니다.

주어진 color 을 사용하여 (x, y)에서 시작하는 사각형을 주어진 widthheight 으로 채웁니다.

void QPainter::fillRect(int x, int y, int width, int height, const QBrush &brush)

이것은 과부하 함수입니다.

주어진 brush 을 사용하여 (x, y)에서 시작하는 사각형을 주어진 widthheight 으로 채웁니다.

void QPainter::fillRect(int x, int y, int width, int height, const QColor &color)

이것은 과부하 함수입니다.

주어진 color 을 사용하여 (x, y)에서 시작하는 사각형을 주어진 widthheight 으로 채웁니다.

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참조하세요 .

void QPainter::setBrush(Qt::BrushStyle style)

이것은 과부하된 기능입니다.

페인터의 브러시를 검은색과 지정된 style 으로 설정합니다.

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)

클리핑을 활성화하고 클립 영역을 지정된 widthheight 을 사용하여 (x, y)에서 시작하는 직사각형으로 설정합니다.

void QPainter::setClipRect(const QRect &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip)

이 함수는 오버로드된 함수입니다.

클리핑을 활성화하고 주어진 클립을 사용하여 주어진 rectangle 으로 클립 영역을 설정합니다 operation.

void QPainter::setClipRegion(const QRegion &region, Qt::ClipOperation operation = Qt::ReplaceClip)

지정된 클립 operation 을 사용하여 클립 영역을 지정된 region 으로 설정합니다. 기본 클립 작업은 현재 클립 영역을 대체하는 것입니다.

클립 영역은 논리적 좌표로 지정됩니다.

clipRegion(), setClipRect() 및 Clipping참조하세요 .

void QPainter::setClipping(bool enable)

enable 이 참이면 클리핑을 활성화하고 enable 이 거짓이면 클리핑을 비활성화합니다.

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 은 선과 윤곽선을 그리는 방법을 정의하고 텍스트 색상도 정의합니다.

pen() 및 Settings도 참조하세요 .

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 이 참이면 페인터에 주어진 렌더링 hint 을 설정하고, 그렇지 않으면 렌더링 힌트를 지웁니다.

setRenderHints(), renderHints() 및 Rendering Quality참조하세요 .

void QPainter::setRenderHints(QPainter::RenderHints hints, bool on = true)

on 이 참이면 페인터에 주어진 렌더링 hints 을 설정하고, 그렇지 않으면 렌더링 힌트를 지웁니다.

setRenderHint(), renderHints() 및 Rendering Quality참조하세요 .

void QPainter::setTransform(const QTransform &transform, bool combine = false)

월드 변환 행렬을 설정합니다. combine 이 참이면 지정된 transform 이 현재 행렬과 결합되고, 그렇지 않으면 현재 행렬을 대체합니다.

transform() 및 setWorldTransform()도 참조하세요 .

void QPainter::setViewTransformEnabled(bool enable)

enable 이 참이면 뷰 변환을 활성화하고 enable 이 거짓이면 뷰 변환을 비활성화합니다.

viewTransformEnabled() 및 창-뷰포트 변환도참조하세요 .

void QPainter::setViewport(const QRect &rectangle)

페인터의 뷰포트 사각형을 지정된 rectangle 으로 설정하고 뷰 변환을 활성화합니다.

뷰포트 사각형은 뷰 변환의 일부입니다. 뷰포트는 장치 좌표계를 지정합니다. 자매인 window()는 논리적 좌표계를 지정합니다.

기본 뷰포트 사각형은 장치의 사각형과 동일합니다.

viewport(), viewTransformEnabled() 및 창-뷰포트 변환도참조하세요 .

void QPainter::setViewport(int x, int y, int width, int height)

이 함수는 오버로드된 함수입니다.

페인터의 뷰포트 사각형을 (x, y)에서 시작하는 사각형으로 설정하고 widthheight 을 지정합니다.

void QPainter::setWindow(const QRect &rectangle)

페인터의 창을 지정된 rectangle 으로 설정하고 보기 변환을 활성화합니다.

창 사각형은 뷰 변환의 일부입니다. 창은 논리적 좌표계를 지정합니다. 자매인 viewport()는 장치 좌표계를 지정합니다.

기본 창 사각형은 장치의 사각형과 동일합니다.

window(), viewTransformEnabled() 및 창-뷰포트 변환도참조하세요 .

void QPainter::setWindow(int x, int y, int width, int height)

이 함수는 오버로드된 함수입니다.

페인터의 창을 (x, y)에서 시작하는 직사각형과 지정된 widthheight 으로 설정합니다.

void QPainter::setWorldMatrixEnabled(bool enable)

enable 이 참이면 변환을 활성화하고 enable 이 거짓이면 변환을 비활성화합니다. 월드 변환 매트릭스는 변경되지 않습니다.

worldMatrixEnabled(), worldTransform() 및 Coordinate Transformations참조하세요 .

void QPainter::setWorldTransform(const QTransform &matrix, bool combine = false)

월드 변환 행렬을 설정합니다. combine 이 참이면 지정된 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()도 참조하십시오 .

© 2025 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.