QPaintEngine Class
QPaintEngine 클래스는 지정된 플랫폼에서 지정된 장치에 QPainter 를 그리는 방법에 대한 추상적인 정의를 제공합니다. 더 보기...
헤더: | #include <QPaintEngine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 상속된 멤버를 포함한 모든 멤버 목록
- QPaintEngine은 페인팅 클래스의 일부입니다.
공용 유형
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::DirtyPen | 0x0001 | 펜이 더럽고 업데이트가 필요합니다. |
QPaintEngine::DirtyBrush | 0x0002 | 브러시가 더러워서 업데이트해야 합니다. |
QPaintEngine::DirtyBrushOrigin | 0x0004 | 브러시 원점이 더럽고 업데이트해야 합니다. |
QPaintEngine::DirtyFont | 0x0008 | 글꼴이 더럽고 업데이트해야 합니다. |
QPaintEngine::DirtyBackground | 0x0010 | 배경이 더럽으므로 업데이트해야 합니다. |
QPaintEngine::DirtyBackgroundMode | 0x0020 | 배경 모드가 더럽고 업데이트해야 합니다. |
QPaintEngine::DirtyTransform | 0x0040 | 변형이 더럽으므로 업데이트해야 합니다. |
QPaintEngine::DirtyClipRegion | 0x0080 | 클립 영역이 더럽으므로 업데이트해야 합니다. |
QPaintEngine::DirtyClipPath | 0x0100 | 클립 경로가 더럽고 업데이트해야 합니다. |
QPaintEngine::DirtyHints | 0x0200 | 렌더링 힌트가 더럽고 업데이트해야 합니다. |
QPaintEngine::DirtyCompositionMode | 0x0400 | 컴포지션 모드가 더럽고 업데이트해야 합니다. |
QPaintEngine::DirtyClipEnabled | 0x0800 | 클리핑이 활성화되어 있는지 여부가 더럽고 업데이트해야 합니다. |
QPaintEngine::DirtyOpacity | 0x1000 | 상수 불투명도가 변경되었으며 QPaintEngine::updateState()의 상태 변경의 일부로 업데이트해야 합니다. |
QPaintEngine::AllDirty | 0xffff | 내부적으로 사용되는 편의성 열거형. |
이러한 유형은 QPainter 에서 QPaintEngine::updateState()를 사용하여 QPaintEngine 에서 다양한 상태의 지연 업데이트를 트리거하는 데 사용됩니다.
페인트 엔진은 모든 더티 상태를 업데이트해야 합니다.
DirtyFlags 유형은 QFlags<DirtyFlag>에 대한 typedef입니다. DirtyFlag 값의 OR 조합을 저장합니다.
열거형 QPaintEngine::페인트엔진기능
플래그 QPaintEngine::페인트엔진기능
이 열거형은 페인트 엔진이 가진 기능 또는 기능을 설명하는 데 사용됩니다. 엔진에서 지원하지 않는 기능이 있는 경우 QPainter 은 다른 수단을 통해 해당 기능을 에뮬레이트하고 에뮬레이트된 결과와 함께 알파 블렌딩된 QImage 을 엔진에 전달하기 위해 최선의 노력을 다합니다. 일부 기능은 에뮬레이션할 수 없습니다: 알파블렌드 및 포터더프.
Constant | 값 | 설명 |
---|---|---|
QPaintEngine::AlphaBlend | 0x00000080 | 엔진이 프리미티브를 알파 블렌딩할 수 있습니다. |
QPaintEngine::Antialiasing | 0x00000400 | 엔진은 앤티앨리어싱을 사용하여 렌더링된 프리미티브의 모양을 개선할 수 있습니다. |
QPaintEngine::BlendModes | 0x00008000 | 엔진은 블렌딩 모드를 지원합니다. |
QPaintEngine::BrushStroke | 0x00000800 | 엔진은 단색뿐만 아니라 브러시를 채우기로 포함하는 드로잉 스트로크를 지원합니다(예: 너비 2의 점선 그라데이션 선). |
QPaintEngine::ConicalGradientFill | 0x00000040 | 엔진은 원뿔형 그라데이션 채우기를 지원합니다. |
QPaintEngine::ConstantOpacity | 0x00001000 | 엔진은 QPainter::setOpacity()에서 제공하는 기능을 지원합니다. |
QPaintEngine::LinearGradientFill | 0x00000010 | 엔진은 선형 그라데이션 채우기를 지원합니다. |
QPaintEngine::MaskedBrush | 0x00002000 | 엔진은 알파 채널 또는 마스크가 있는 텍스처가 있는 브러시를 렌더링할 수 있습니다. |
QPaintEngine::ObjectBoundingModeGradients | 0x00010000 | 엔진은 좌표 모드가 있는 그라디언트를 기본적으로 지원합니다 QGradient::ObjectBoundingMode. 그렇지 않으면 QPaintEngine::PatternTransform이 지원되는 경우 객체 경계 모드 그라데이션은 좌표 모드 QGradient::LogicalMode 및 좌표 매핑을 위한 브러시 변환을 사용하여 그라데이션으로 변환됩니다. |
QPaintEngine::PainterPaths | 0x00000200 | 엔진은 경로를 지원합니다. |
QPaintEngine::PaintOutsidePaintEvent | 0x20000000 | 엔진은 페인트 이벤트 외부에서 페인팅할 수 있습니다. |
QPaintEngine::PatternBrush | 0x00000008 | 엔진은 Qt::BrushStyle 에 지정된 브러시 패턴으로 브러시를 렌더링할 수 있습니다. |
QPaintEngine::PatternTransform | 0x00000002 | 엔진은 브러시 패턴 변환을 지원합니다. |
QPaintEngine::PerspectiveTransform | 0x00004000 | 엔진은 프리미티브에 대한 원근 변환을 지원합니다. |
QPaintEngine::PixmapTransform | 0x00000004 | 엔진은 회전 및 전단을 포함한 픽셀맵을 변환할 수 있습니다. |
QPaintEngine::PorterDuff | 0x00000100 | 엔진은 포터-더프 연산을 지원합니다. |
QPaintEngine::PrimitiveTransform | 0x00000001 | 엔진은 드로잉 기본 요소 변환을 지원합니다. |
QPaintEngine::RadialGradientFill | 0x00000020 | 엔진은 방사형 그라데이션 채우기를 지원합니다. |
QPaintEngine::RasterOpModes | 0x00020000 | 엔진은 비트 단위 래스터 연산을 지원합니다. |
QPaintEngine::AllFeatures | 0xffffffff | 위의 모든 기능. 이 열거형 값은 일반적으로 비트 마스크로 사용됩니다. |
PaintEngineFeatures 유형은 QFlags<PaintEngineFeature>에 대한 typedef입니다. PaintEngineFeature 값의 OR 조합을 저장합니다.
enum QPaintEngine::PolygonDrawMode
상수 | 값 | 설명 |
---|---|---|
QPaintEngine::OddEvenMode | 0 | 다각형은 홀수 짝수 채우기 규칙을 사용하여 그려야 합니다. |
QPaintEngine::WindingMode | 1 | 다각형은 와인딩 채우기 규칙을 사용하여 그려야 합니다. |
QPaintEngine::ConvexMode | 2 | 다각형은 볼록 다각형이며 사용 가능한 경우 특수 알고리즘을 사용하여 그릴 수 있습니다. |
QPaintEngine::PolylineMode | 3 | 다각형의 윤곽선만 그려야 합니다. |
enum QPaintEngine::Type
상수 | 값 | 설명 |
---|---|---|
QPaintEngine::X11 | 0 | |
QPaintEngine::Windows | 1 | |
QPaintEngine::MacPrinter | 4 | |
QPaintEngine::CoreGraphics | 3 | macOS의 쿼츠2D(코어그래픽) |
QPaintEngine::QuickDraw | 2 | macOS의 QuickDraw |
QPaintEngine::QWindowSystem | 5 | 임베디드 리눅스용 Qt |
QPaintEngine::OpenGL | 6 | |
QPaintEngine::Picture | 7 | QPicture 포맷 |
QPaintEngine::SVG | 8 | 확장 가능한 벡터 그래픽스 XML 포맷 |
QPaintEngine::Raster | 9 | |
QPaintEngine::Direct3D | 10 | Windows 전용, Direct3D 기반 엔진 |
QPaintEngine::Pdf | 11 | 휴대용 문서 형식 |
QPaintEngine::OpenVG | 12 | |
QPaintEngine::User | 50 | 첫 번째 사용자 유형 ID |
QPaintEngine::MaxUser | 100 | 마지막 사용자 유형 ID |
QPaintEngine::OpenGL2 | 13 | |
QPaintEngine::PaintBuffer | 14 | |
QPaintEngine::Blitter | 15 | |
QPaintEngine::Direct2D | 16 | Windows 전용, Direct2D 기반 엔진 |
멤버 함수 문서
[explicit]
QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
caps 에 지정된 기능 집합으로 페인트 엔진을 생성합니다.
[virtual noexcept]
QPaintEngine::~QPaintEngine()
페인트 엔진을 파괴합니다.
[pure virtual]
bool QPaintEngine::begin(QPaintDevice *pdev)
페인트 장치에서 페인팅을 시작할 때 이 함수를 다시 구현하여 페인트 엔진을 초기화하세요 pdev. 초기화에 성공하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
[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 를 사용하여 주어진 rectangle 에 sr 사각형으로 지정된 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)
이 함수를 다시 구현하여 주어진 r 에 sr 사각형으로 지정된 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 직사각형 rects 을 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)
이 함수를 다시 구현하여 주어진 p 에서 시작하여 주어진 rect 에 pixmap 을 그립니다. rect 이 채워질 때까지 픽셀맵이 반복적으로 그려집니다.
[pure virtual]
bool QPaintEngine::end()
이 함수를 다시 구현하여 현재 페인트 장치에서 페인팅을 완료합니다. 페인팅이 성공적으로 완료되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
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.