페인트 장치 및 백엔드
페인트 장치 만들기
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 명령을 기록하고 재생하는 페인트 장치입니다. 그림은 페인트 명령을 플랫폼에 독립적인 형식으로 IO 장치에 직렬화합니다. QPicture 또한 해상도에 독립적입니다. 즉, QPicture 은 다른 장치(예: svg, pdf, ps, 프린터 및 화면)에서 동일하게 표시될 수 있습니다. Qt는 QPicture::load() 및 QPicture::save() 함수뿐만 아니라 사진을 로드하고 저장하기 위한 스트리밍 연산자를 제공합니다. |
커스텀 백엔드 새로운 백엔드 지원은 QPaintDevice 클래스에서 파생하고 가상 QPaintDevice::paintEngine() 함수를 다시 구현하여 QPainter 에 이 특정 장치에 그리는 데 사용할 페인트 엔진을 알려줌으로써 구현할 수 있습니다. 실제로 디바이스에서 그림을 그릴 수 있으려면 이 페인트 엔진은 QPaintEngine 클래스에서 파생하여 만든 사용자 지정 페인트 엔진이어야 합니다. |
© 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.