이 페이지에서

QPaintEngine Class

QPaintEngine 클래스는 QPainter 가 특정 플랫폼의 특정 장치에 어떻게 그림을 그리는지에 대한 추상적인 정의를 제공합니다. 더 보기...

헤더: #include <QPaintEngine>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

공개 유형

enum DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, …, AllDirty }
flags DirtyFlags
enum PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ConicalGradientFill, …, AllFeatures }
flags PaintEngineFeatures
enum PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode }
enum Type { X11, Windows, MacPrinter, CoreGraphics, QuickDraw, …, Direct2D }

공개 함수

QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
virtual ~QPaintEngine()
virtual bool begin(QPaintDevice *pdev) = 0
virtual void drawEllipse(const QRectF &rect)
virtual void drawEllipse(const QRect &rect)
virtual void drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
virtual void drawLines(const QLineF *lines, int lineCount)
virtual void drawLines(const QLine *lines, int lineCount)
virtual void drawPath(const QPainterPath &path)
virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0
virtual void drawPoints(const QPoint *points, int pointCount)
virtual void drawPoints(const QPointF *points, int pointCount)
virtual void drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
virtual void drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
virtual void drawRects(const QRectF *rects, int rectCount)
virtual void drawRects(const QRect *rects, int rectCount)
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
virtual void drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
virtual bool end() = 0
bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const
bool isActive() const
QPaintDevice *paintDevice() const
QPainter *painter() const
void setActive(bool state)
virtual QPaintEngine::Type type() const = 0
virtual void updateState(const QPaintEngineState &state) = 0

상세 설명

Qt는 지원되는 다양한 페인터 백엔드에 대해 QPaintEngine의 여러 가지 미리 만들어진 구현체를 제공합니다. 제공되는 주요 페인트 엔진은 래스터 페인트 엔진이며, 여기에는 지원되는 모든 플랫폼에서 전체 기능 세트를 지원하는 소프트웨어 래스터라이저가 포함되어 있습니다. 이는 Windows, X11 및 macOS와 같은 환경에서 ` QWidget` 기반 클래스에 대한 페인팅의 기본값이며, ` QImage `에 대한 페인팅 백엔드 역할을 하며, 특정 기능을 지원하지 않는 페인트 엔진의 대체 수단으로 사용됩니다. 또한 OpenGL( QOpenGLWidget 를 통해 접근 가능) 및 인쇄( QPainter 를 사용하여 QPrinter 객체에 그릴 수 있게 해줌)용 QPaintEngine 구현체를 제공합니다.

QPainter 을 사용하여 다른 백엔드에 그리기를 수행하려면, QPaintEngine을 상속받은 서브클래스를 만들고 해당 클래스의 모든 가상 함수를 재구현해야 합니다. 그런 다음 QPaintDevice 를 상속받아 QPaintDevice::paintEngine() 가상 함수를 재구현함으로써 QPaintEngine 구현체를 사용할 수 있게 됩니다.

QPaintEngine은 이를 생성한 QPaintDevice 에 의해 생성되며, 해당 이 소유합니다.

QPainter, QPaintDevice::paintEngine(), 그리고 페인트 시스템도 참조하십시오 .

멤버 유형 문서

enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags

상수값설명
QPaintEngine::DirtyPen0x0001펜이 더러워졌으므로 업데이트해야 합니다.
QPaintEngine::DirtyBrush0x0002브러시가 더러워져 있으므로 업데이트해야 합니다.
QPaintEngine::DirtyBrushOrigin0x0004브러시 원점이 더러워져 있으므로 업데이트해야 합니다.
QPaintEngine::DirtyFont0x0008글꼴이 더러워져 있어 업데이트해야 합니다.
QPaintEngine::DirtyBackground0x0010배경이 더러우므로 업데이트해야 합니다.
QPaintEngine::DirtyBackgroundMode0x0020배경 모드가 더러워졌으므로 업데이트해야 합니다.
QPaintEngine::DirtyTransform0x0040변환이 더러워져 있으므로 업데이트해야 합니다.
QPaintEngine::DirtyClipRegion0x0080클립 영역이 더러워졌으므로 업데이트해야 합니다.
QPaintEngine::DirtyClipPath0x0100클립 경로가 변경되었으므로 업데이트해야 합니다.
QPaintEngine::DirtyHints0x0200렌더링 힌트가 변경되었으므로 업데이트해야 합니다.
QPaintEngine::DirtyCompositionMode0x0400컴포지션 모드가 변경되었으므로 업데이트해야 합니다.
QPaintEngine::DirtyClipEnabled0x0800클리핑 활성화 여부가 더티 상태이므로 업데이트해야 합니다.
QPaintEngine::DirtyOpacity0x1000상수 불투명도가 변경되었으며, QPaintEngine::updateState()의 상태 변경의 일환으로 업데이트되어야 합니다.
QPaintEngine::AllDirty0xffff내부에서 사용되는 편의 열거형입니다.

QPainter 는 QPaintEngine::updateState()를 사용하여 QPaintEngine 의 다양한 상태에 대한 지연 업데이트를 트리거하는 데 이러한 유형을 사용합니다.

페인트 엔진은 모든 더티 상태를 업데이트해야 합니다.

DirtyFlags 유형은 QFlags<DirtyFlag>에 대한 typedef입니다. 이 유형은 DirtyFlag 값들의 OR 조합을 저장합니다.

enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures

이 열거형은 페인트 엔진이 지원하는 기능이나 성능을 설명하는 데 사용됩니다. 엔진이 특정 기능을 지원하지 않는 경우, ` QPainter `는 다른 방법을 통해 해당 기능을 최대한 에뮬레이트하고, 에뮬레이션된 결과가 포함된 알파 블렌딩된 ` QImage `를 엔진에 전달합니다. `AlphaBlend`와 `PorterDuff`와 같은 일부 기능은 에뮬레이션할 수 없습니다.

상수값설명
QPaintEngine::AlphaBlend0x00000080엔진은 프리미티브에 알파 블렌딩을 적용할 수 있습니다.
QPaintEngine::Antialiasing0x00000400엔진은 앤티앨리어싱을 사용하여 렌더링된 프리미티브의 외관을 개선할 수 있습니다.
QPaintEngine::BlendModes0x00008000엔진은 블렌딩 모드를 지원합니다.
QPaintEngine::BrushStroke0x00000800엔진은 단색뿐만 아니라 브러시를 채우기로 포함하는 획 그리기를 지원합니다(예: 너비 2의 점선 그라데이션 선).
QPaintEngine::ConicalGradientFill0x00000040이 엔진은 원뿔형 그라데이션 채우기를 지원합니다.
QPaintEngine::ConstantOpacity0x00001000이 엔진은 QPainter::setOpacity()에서 제공하는 기능을 지원합니다.
QPaintEngine::LinearGradientFill0x00000010엔진은 선형 그라데이션 채우기를 지원합니다.
QPaintEngine::MaskedBrush0x00002000이 엔진은 알파 채널이나 마스크가 있는 텍스처를 가진 브러시를 렌더링할 수 있습니다.
QPaintEngine::ObjectBoundingModeGradients0x00010000이 엔진은 좌표 모드 QGradient::ObjectBoundingMode 의 그라데이션을 기본적으로 지원합니다. 그렇지 않은 경우, QPaintEngine::PatternTransform이 지원되면 객체 바운딩 모드 그라데이션이 좌표 모드 QGradient::LogicalMode 의 그라데이션으로 변환되며, 좌표 매핑을 위한 브러시 변환이 적용됩니다.
QPaintEngine::PainterPaths0x00000200이 엔진은 경로를 지원합니다.
QPaintEngine::PaintOutsidePaintEvent0x20000000이 엔진은 페인트 이벤트 외부에서도 페인팅할 수 있습니다.
QPaintEngine::PatternBrush0x00000008이 엔진은 Qt::BrushStyle 에 지정된 브러시 패턴으로 브러시를 렌더링할 수 있습니다.
QPaintEngine::PatternTransform0x00000002이 엔진은 브러시 패턴 변환을 지원합니다.
QPaintEngine::PerspectiveTransform0x00004000이 엔진은 프리미티브에 대한 원근 변환을 수행할 수 있습니다.
QPaintEngine::PixmapTransform0x00000004이 엔진은 회전 및 전단을 포함하여 픽스맵을 변형할 수 있습니다.
QPaintEngine::PorterDuff0x00000100이 엔진은 Porter-Duff 연산을 지원합니다.
QPaintEngine::PrimitiveTransform0x00000001이 엔진은 드로잉 프리미티브의 변환을 지원합니다.
QPaintEngine::RadialGradientFill0x00000020이 엔진은 방사형 그라데이션 채우기를 지원합니다.
QPaintEngine::RasterOpModes0x00020000이 엔진은 비트 단위 래스터 연산을 지원합니다.
QPaintEngine::AllFeatures0xffffffff위의 모든 기능. 이 열거형 값은 일반적으로 비트 마스크로 사용됩니다.

PaintEngineFeatures 유형은 QFlags<PaintEngineFeature>에 대한 typedef입니다. 이 유형은 PaintEngineFeature 값들의 OR 조합을 저장합니다.

enum QPaintEngine::PolygonDrawMode

상수값설명
QPaintEngine::OddEvenMode0다각형은 OddEven 채우기 규칙을 사용하여 그려져야 합니다.
QPaintEngine::WindingMode1다각형은 ‘Winding’ 채우기 규칙을 사용하여 그려져야 합니다.
QPaintEngine::ConvexMode2다각형은 볼록 다각형이며, 가능한 경우 특수한 알고리즘을 사용하여 그려질 수 있습니다.
QPaintEngine::PolylineMode3다각형의 윤곽선만 그려져야 합니다.

enum QPaintEngine::Type

상수값설명
QPaintEngine::X110 
QPaintEngine::Windows1 
QPaintEngine::MacPrinter4 
QPaintEngine::CoreGraphics3macOS의 Quartz2D (CoreGraphics)
QPaintEngine::QuickDraw2macOS의 QuickDraw
QPaintEngine::QWindowSystem5임베디드 리눅스용 Qt
QPaintEngine::OpenGL6 
QPaintEngine::Picture7QPicture 형식
QPaintEngine::SVG8확장 가능한 벡터 그래픽스 XML 형식
QPaintEngine::Raster9 
QPaintEngine::Direct3D10Windows 전용, Direct3D 기반 엔진
QPaintEngine::Pdf11휴대용 문서 형식
QPaintEngine::OpenVG12 
QPaintEngine::User50첫 번째 사용자 유형 ID
QPaintEngine::MaxUser100마지막 사용자 유형 ID
QPaintEngine::OpenGL213 
QPaintEngine::PaintBuffer14 
QPaintEngine::Blitter15 
QPaintEngine::Direct2D16Windows 전용, Direct2D 기반 엔진

멤버 함수 설명서

[explicit] QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())

caps 에서 지정한 기능 세트를 갖춘 페인트 엔진을 생성합니다.

[virtual noexcept] QPaintEngine::~QPaintEngine()

페인트 엔진을 파괴합니다.

[pure virtual] bool QPaintEngine::begin(QPaintDevice *pdev)

pdev 에서 페인트 작업이 시작될 때 페인트 엔진을 초기화하도록 이 함수를 재구현하십시오. 초기화가 성공하면 true를 반환하고, 그렇지 않으면 false를 반환하십시오.

end() 및 isActive()도 참조하십시오 .

[virtual] void QPaintEngine::drawEllipse(const QRectF &rect)

rect 사각형 내에 들어갈 수 있는 가장 큰 타원을 그리도록 이 함수를 재구현하십시오.

기본 구현은 drawPolygon()를 호출합니다.

[virtual] void QPaintEngine::drawEllipse(const QRect &rect)

이 함수의 기본 구현은 이 함수의 부동소수점 버전을 호출합니다.

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

[virtual] void QPaintEngine::drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)

image 이 함수를 재구현하여, 주어진 변환 플래그 flags 를 사용하여 sr 에서 사각형으로 지정된 부분을 주어진 rectangle 에 그리도록 하십시오. 이를 픽스맵으로 변환하기 위함입니다.

[virtual] void QPaintEngine::drawLines(const QLineF *lines, int lineCount)

기본 구현은 lines 에 있는 줄 목록을, 페인트 엔진의 기능 세트에 따라 drawPath() 또는 drawPolygon()에 대한 lineCount 개의 개별 호출로 분할합니다.

[virtual] void QPaintEngine::drawLines(const QLine *lines, int lineCount)

기본 구현은 lines 파일의 처음 lineCount 줄을 QLineF 로 변환하고, 이 함수의 부동 소수점 버전을 호출합니다.

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

[virtual] void QPaintEngine::drawPath(const QPainterPath &path)

기본 구현은 ` path `를 무시하고 아무 작업도 수행하지 않습니다.

[pure virtual] void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)

이 함수를 재구현하여, 주어진 r 내의 sr 사각형으로 지정된 pm 의 일부를 그리도록 하십시오.

[virtual] void QPaintEngine::drawPoints(const QPoint *points, int pointCount)

버퍼에 첫 번째 pointCount 개 점을 그립니다. points

기본 구현은 ` points `에 있는 처음 ` pointCount `개의 `QPoint`를 `QPointF`로 변환한 후, `drawPoints`의 부동 소수점 버전을 호출합니다.

[virtual] void QPaintEngine::drawPoints(const QPointF *points, int pointCount)

버퍼에 첫 번째 pointCount 개 점을 그립니다. points

[virtual] void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

pointCount 의 첫 번째 점들로 정의된 다각형을 points 에서 mode mode 를 사용하여 그리도록 이 가상 함수를 재구현하십시오.

참고: drawPolygon() 함수 중적어도 하나는 재구현해야 합니다.

[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

pointCount 의 첫 번째 점들로 정의된 다각형을 points 에 mode mode 를 사용하여 그릴 수 있도록 이 가상 함수를 재구현하십시오.

참고: drawPolygon() 함수 중적어도 하나는 재구현해야 합니다.

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

[virtual] void QPaintEngine::drawRects(const QRectF *rects, int rectCount)

버퍼 rects 에 첫 번째 rectCount 사각형을 그립니다. 이 함수의 기본 구현은 페인트 엔진의 기능 세트에 따라 drawPath() 또는 drawPolygon()을 호출합니다.

[virtual] void QPaintEngine::drawRects(const QRect *rects, int rectCount)

기본 구현은 버퍼 rects 에 있는 처음 rectCount 개의 사각형을 QRectF 로 변환한 다음, 이 함수의 부동 소수점 버전을 호출합니다.

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

[virtual] void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)

이 함수는 위치 p 에 텍스트 항목 textItem 을 그립니다. 이 함수의 기본 구현은 텍스트를 QPainterPath 로 변환한 다음, 그 결과로 생성된 경로를 그립니다.

[virtual] void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)

이 함수를 재구현하여, 주어진 rect 에서 주어진 p 를 시작으로 pixmap 을 그리도록 하십시오. rect 가 채워질 때까지 픽스맵이 반복적으로 그려집니다.

[pure virtual] bool QPaintEngine::end()

현재 페인트 장치에 대한 그리기 작업을 완료하도록 이 함수를 재구현하십시오. 그리기가 성공적으로 완료되면 true를 반환하고, 그렇지 않으면 false를 반환하십시오.

begin() 및 isActive()도 참조하십시오 .

bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const

페인트 엔진이 지정된 feature 를 지원하는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

bool QPaintEngine::isActive() const

페인트 엔진이 현재 렌더링 중이면 ` true `를 반환하고, 그렇지 않으면 ` false`를 반환합니다.

setActive()도 참조하십시오 .

QPaintDevice *QPaintEngine::paintDevice() const

렌더링이 진행 중일 경우, 이 엔진이 렌더링하고 있는 디바이스를 반환합니다. 그렇지 않은 경우 ` nullptr`를 반환합니다.

QPainter *QPaintEngine::painter() const

페인트 엔진의 페인터를 반환합니다.

void QPaintEngine::setActive(bool state)

페인트 엔진의 활성 상태를 ` state`로 설정합니다.

isActive()도 참조하십시오 .

[pure virtual] QPaintEngine::Type QPaintEngine::type() const

이 함수를 재구현하여 페인트 엔진 Type 을 반환하도록 하십시오.

[pure virtual] void QPaintEngine::updateState(const QPaintEngineState &state)

페인트 엔진의 상태를 업데이트하기 위해 이 함수를 재구현하십시오.

이 함수가 구현되면, 페인트 엔진의 현재 state 를 확인하고 변경된 속성을 업데이트하는 역할을 담당합니다. QPaintEngineState::state() 함수를 사용하여 업데이트해야 할 속성을 확인한 다음, 해당 get function 를 사용하여 지정된 속성의 현재 값을 가져오십시오.

QPaintEngineState도 참조하십시오 .

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