이 페이지에서

페인트 디바이스 및 백엔드

페인트 디바이스 생성

QPaintDevice 클래스는 페인팅이 가능한 객체의 기본 클래스입니다. 즉, QPainter 는 모든 QPaintDevice 하위 클래스에 그릴 수 있습니다. QPaintDevice 의 그리기 기능은 QWidget, QImage, QPixmap, QPicture, QPrinter 및 QOpenGLPaintDevice 등을 통해 구현됩니다.

위젯

QWidget 클래스는 Qt Widgets 모듈의 사용자 인터페이스 요소들의 기본 클래스입니다. 이 클래스는 윈도우 시스템으로부터 마우스, 키보드 및 기타 이벤트를 수신하고, 화면에 자체의 표현을 그립니다.

이미지

QImage 클래스는 I/O 및 직접적인 픽셀 접근과 조작을 위해 설계되고 최적화된, 하드웨어 독립적인 이미지 표현을 제공합니다. QImage 는 단색, 8비트, 32비트 및 알파 블렌딩 이미지를 포함한 여러 이미지 형식을 지원합니다.

QImage 를 그리기 장치로 사용할 때의 장점 중 하나는 플랫폼에 구애받지 않는 방식으로 모든 그리기 작업의 픽셀 정확성을 보장할 수 있다는 점입니다. 또 다른 이점은 그리기 작업을 현재 GUI 스레드와는 다른 스레드에서 수행할 수 있다는 것입니다.

Pixmap

QPixmap 클래스는 화면에 이미지를 표시하기 위해 설계되고 최적화된 오프스크린 이미지 표현입니다. QImage 와 달리, 픽스맵의 픽셀 데이터는 내부적으로 저장되며 기본 창 시스템에 의해 관리됩니다. 즉, 픽셀에 접근하려면 QPainter 함수를 사용하거나 QPixmap 를 QImage 로 변환해야만 합니다.

QPixmap 를 사용한 그리기 성능을 최적화하기 위해, Qt는 QPixmapCache 클래스를 제공합니다. 이 클래스를 사용하면 생성 비용이 많이 드는 임시 픽스맵을 캐시 한도 이상의 저장 공간을 차지하지 않으면서 저장할 수 있습니다.

Qt는 또한 ` QPixmap`을 상속하는 ` QBitmap ` 편의 클래스를 제공합니다. ` QBitmap `는 단색(1비트 심도) 픽스맵을 보장하며, 주로 사용자 정의 ` QCursor ` 및 ` QBrush ` 객체를 생성하고 ` QRegion ` 객체를 구성하는 데 사용됩니다.

OpenGL 페인트 디바이스

앞서 언급한 바와 같이, Qt는 Qt 애플리케이션에서 OpenGL을 쉽게 사용할 수 있도록 하는 클래스를 제공합니다. 예를 들어, QOpenGLPaintDevice 는 QPainter 를 통해 렌더링을 위한 OpenGL API를 활성화합니다.

그림

QPicture 클래스는 QPainter 명령을 기록하고 재실행하는 페인트 디바이스입니다. Picture는 페인터 명령을 플랫폼에 구애받지 않는 형식으로 IO 디바이스에 직렬화합니다. QPicture 는 해상도에 구애받지 않으므로, 즉 QPicture 는 다양한 디바이스(예: svg, pdf, ps, 프린터 및 화면)에서 동일한 모양으로 표시될 수 있습니다.

Qt XML은 그림의 불러오기 및 저장을 위한 QPicture::load() 및 QPicture::save() 함수와 스트리밍 연산자를 제공합니다.

사용자 정의 백엔드

새로운 백엔드에 대한 지원은 QPaintDevice 클래스를 상속받고, 가상 함수 QPaintDevice::paintEngine()를 재구현하여 QPainter 에 이 특정 장치에 그리기 위해 어떤 페인트 엔진을 사용해야 하는지 알려줌으로써 구현할 수 있습니다. 실제로 장치에 그리기 위해서는 이 페인트 엔진이 QPaintEngine 클래스를 상속받아 생성된 사용자 정의 페인트 엔진이어야 합니다.

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