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() 및 페인트 시스템도참조하십시오 .

멤버 유형 문서

열거형 QPaintEngine::DirtyFlag
플래그 QPaintEngine::DirtyFlags

Constant설명
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 조합을 저장합니다.

열거형 QPaintEngine::페인트엔진기능
플래그 QPaintEngine::페인트엔진기능

이 열거형은 페인트 엔진이 가진 기능 또는 기능을 설명하는 데 사용됩니다. 엔진에서 지원하지 않는 기능이 있는 경우 QPainter 은 다른 수단을 통해 해당 기능을 에뮬레이트하고 에뮬레이트된 결과와 함께 알파 블렌딩된 QImage 을 엔진에 전달하기 위해 최선의 노력을 다합니다. 일부 기능은 에뮬레이션할 수 없습니다: 알파블렌드 및 포터더프.

Constant설명
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엔진은 포터-더프 연산을 지원합니다.
QPaintEngine::PrimitiveTransform0x00000001엔진은 드로잉 기본 요소 변환을 지원합니다.
QPaintEngine::RadialGradientFill0x00000020엔진은 방사형 그라데이션 채우기를 지원합니다.
QPaintEngine::RasterOpModes0x00020000엔진은 비트 단위 래스터 연산을 지원합니다.
QPaintEngine::AllFeatures0xffffffff위의 모든 기능. 이 열거형 값은 일반적으로 비트 마스크로 사용됩니다.

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

enum QPaintEngine::PolygonDrawMode

상수설명
QPaintEngine::OddEvenMode0다각형은 홀수 짝수 채우기 규칙을 사용하여 그려야 합니다.
QPaintEngine::WindingMode1다각형은 와인딩 채우기 규칙을 사용하여 그려야 합니다.
QPaintEngine::ConvexMode2다각형은 볼록 다각형이며 사용 가능한 경우 특수 알고리즘을 사용하여 그릴 수 있습니다.
QPaintEngine::PolylineMode3다각형의 윤곽선만 그려야 합니다.

enum QPaintEngine::Type

상수설명
QPaintEngine::X110
QPaintEngine::Windows1
QPaintEngine::MacPrinter4
QPaintEngine::CoreGraphics3macOS의 쿼츠2D(코어그래픽)
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. 초기화에 성공하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

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)

이 함수를 다시 구현하여 주어진 변환 플래그 flags 를 사용하여 주어진 rectanglesr 사각형으로 지정된 image 의 일부를 그려서 픽셀맵으로 변환합니다.

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

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

[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)

이 함수를 다시 구현하여 주어진 rsr 사각형으로 지정된 pm 의 일부를 그립니다.

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

버퍼의 첫 번째 pointCount 포인트를 그립니다. points

기본 구현은 points 의 첫 번째 pointCount QPoints를 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)

이 가상 함수를 다시 구현하여 points 에서 mode 모드를 사용하여 pointCount 첫 번째 점으로 정의된 다각형을 그립니다.

참고: drawPolygon() 함수 중 하나 이상을 다시 구현해야 합니다.

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

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

이 가상 함수를 다시 구현하여 points 에서 mode 모드를 사용하여 pointCount 첫 번째 점으로 정의된 다각형을 그립니다.

참고: drawPolygon() 함수 중 하나 이상을 다시 구현해야 합니다.

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

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

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

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

기본 구현은 버퍼의 첫 번째 rectCount 직사각형 rectsQRectF 으로 변환하고 이 함수의 부동 소수점 버전을 호출합니다.

[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)

이 함수를 다시 구현하여 주어진 p 에서 시작하여 주어진 rectpixmap 을 그립니다. rect 이 채워질 때까지 픽셀맵이 반복적으로 그려집니다.

[pure virtual] bool QPaintEngine::end()

이 함수를 다시 구현하여 현재 페인트 장치에서 페인팅을 완료합니다. 페인팅이 성공적으로 완료되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

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

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