Graphics/ko: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(Add "cleanup" tag)
(Convert ExpressionEngine links)
Line 1: Line 1:
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}
{{Cleanup | reason=Auto-imported from ExpressionEngine.}}


'''한국어''' | "영어 원문":https://doc.qt.io/qt-5.1/qtdoc/topics-graphics.html
'''한국어''' | [https://doc.qt.io/qt-5.1/qtdoc/topics-graphics.html 영어 원문]


= 그래픽 =
= 그래픽 =
Line 9: Line 9:
= QPainter의 2D 그래픽 =
= QPainter의 2D 그래픽 =


"QPainter":https://doc.qt.io/qt-5.1/qtgui/qpainter.html는 서로 다른 표면이나 "QPaintDevice":https://doc.qt.io/qt-5.1/qtgui/qpaintdevice.html 인스턴스들 (QImage, QOpenGLPaintDevice, QWidget, 그리고 QPrinter 와 같은) 위에 텍스트와 이미지, 그리고 벡터 그래픽을 그리기 위한 API를 제공합니다. 실제 그리는 작업은 QPaintDevice의 QPaintEngine에서 일어납니다. 소프트웨어 rasterizer 와 OpenGL (ES) 2.0 뒷단은 가장 중요한 두 가지 QPaintEngine 구현입니다. 이 Raster paint 엔진은 Qt의 소프트웨어 rasterizer이며, QImage 또는 QWidget 위에 그릴 때 사용됩니다. OpenGL paint engine 상에서 이 엔진의 강점은 antialiasing이 활성화 되었을 때의 높은 품질과, 완벽한 기능 집합입니다.
[https://doc.qt.io/qt-5.1/qtgui/qpainter.html는 QPainter] 서로 다른 표면이나 [https://doc.qt.io/qt-5.1/qtgui/qpaintdevice.html QPaintDevice] 인스턴스들 (QImage, QOpenGLPaintDevice, QWidget, 그리고 QPrinter 와 같은) 위에 텍스트와 이미지, 그리고 벡터 그래픽을 그리기 위한 API를 제공합니다. 실제 그리는 작업은 QPaintDevice의 QPaintEngine에서 일어납니다. 소프트웨어 rasterizer 와 OpenGL (ES) 2.0 뒷단은 가장 중요한 두 가지 QPaintEngine 구현입니다. 이 Raster paint 엔진은 Qt의 소프트웨어 rasterizer이며, QImage 또는 QWidget 위에 그릴 때 사용됩니다. OpenGL paint engine 상에서 이 엔진의 강점은 antialiasing이 활성화 되었을 때의 높은 품질과, 완벽한 기능 집합입니다.
* "Paint System":https://doc.qt.io/qt-5.1/qtgui/paintsystem.html - QPainter 클래스와 아키텍쳐의 개요.
* [https://doc.qt.io/qt-5.1/qtgui/paintsystem.html Paint System] - QPainter 클래스와 아키텍쳐의 개요.
* "Coordinate System":https://doc.qt.io/qt-5.1/qtgui/coordsys.html - QPainter의 좌표 시스템이 어떻게 동작하는지에 대해 설명합니다.
* [https://doc.qt.io/qt-5.1/qtgui/coordsys.html Coordinate System] - QPainter의 좌표 시스템이 어떻게 동작하는지에 대해 설명합니다.
* "Drawing and Filling":https://doc.qt.io/qt-5.1/qtgui/paintsystem-drawing.html - QPainter가 어떻게 벡터의 모양을 채우고 테두리를 그리는지에 대해 설명합니다.
* [https://doc.qt.io/qt-5.1/qtgui/paintsystem-drawing.html Drawing and Filling] - QPainter가 어떻게 벡터의 모양을 채우고 테두리를 그리는지에 대해 설명합니다.


QPainter에서 가장 중요한 렌더링 대상은 다음과 같습니다:
QPainter에서 가장 중요한 렌더링 대상은 다음과 같습니다:


* "QImage":https://doc.qt.io/qt-5.1/qtgui/qimage.html - 픽셀에 직접 접근하는 하드웨어 독립적 이미지 표현. QPainter는 QImage 인스턴스를 그리기 위해 소프트웨어 rasterizer 를 사용할 것입니다.
* [https://doc.qt.io/qt-5.1/qtgui/qimage.html QImage] - 픽셀에 직접 접근하는 하드웨어 독립적 이미지 표현. QPainter는 QImage 인스턴스를 그리기 위해 소프트웨어 rasterizer 를 사용할 것입니다.
* "QPixmap":https://doc.qt.io/qt-5.1/qtgui/qpixmap.html - 화면 표시에 적합한 이미지 표현. QPainter는 QPixmap 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용할 것입니다..
* [https://doc.qt.io/qt-5.1/qtgui/qpixmap.html QPixmap] - 화면 표시에 적합한 이미지 표현. QPainter는 QPixmap 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용할 것입니다..
* "QOpenGLPaintDevice":https://doc.qt.io/qt-5.1/qtgui/qopenglpaintdevice.html - 현 OpenGL (ES) 2.0 컨텐츠로 렌더링하는 페인트 장치. QPainter는 QOpenGLPaintDevice 인스턴스를 그리기 위해 하드웨어 가속 OpenGL 호출을 사용합니다.
* [https://doc.qt.io/qt-5.1/qtgui/qopenglpaintdevice.html QOpenGLPaintDevice] - 현 OpenGL (ES) 2.0 컨텐츠로 렌더링하는 페인트 장치. QPainter는 QOpenGLPaintDevice 인스턴스를 그리기 위해 하드웨어 가속 OpenGL 호출을 사용합니다.
* "QBackingStore":https://doc.qt.io/qt-5.1/qtgui/qbackingstore.html - 최상위 윈도우에 대한 백 버퍼. QPainter는 QBackingStore 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용합니다.
* [https://doc.qt.io/qt-5.1/qtgui/qbackingstore.html QBackingStore] - 최상위 윈도우에 대한 백 버퍼. QPainter는 QBackingStore 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용합니다.
* "QWidget":https://doc.qt.io/qt-5.1/qtwidgets/qwidget.html - pre-Qt Quick 사용자 인터페이스 클래스를 위한 기본클래스. QPainter는 QBackingStore를 이용하여 위젯을 렌더링 할 것입니다.
* [https://doc.qt.io/qt-5.1/qtwidgets/qwidget.html QWidget] - pre-Qt Quick 사용자 인터페이스 클래스를 위한 기본클래스. QPainter는 QBackingStore를 이용하여 위젯을 렌더링 할 것입니다.


QPainter 와 관련 classes 들은 Qt GUI 모듈의 일부로, "Qt GUI":https://doc.qt.io/qt-5.1/qtgui/qtgui-index.html 페이지에 더 자세한 내용이 설명되어 있습니다.
QPainter 와 관련 classes 들은 Qt GUI 모듈의 일부로, [https://doc.qt.io/qt-5.1/qtgui/qtgui-index.html Qt GUI] 페이지에 더 자세한 내용이 설명되어 있습니다.


= OpenGL 과 3D =
= OpenGL 과 3D =


OpenGL은 하드웨어 가속과 3D 그래픽에 가장 널리 적용되는 그래픽 API으로, 모든 데스크탑 플랫폼과 거의 모든 모바일과 임베디드 플랫폼에 구현되어 있습니다. Qt 라이브러리는 사용자가 응용프로그램에 OpenGL을 통합하는 걸 도와주는 많은 클래스들을 포함하고 있습니다.
OpenGL은 하드웨어 가속과 3D 그래픽에 가장 널리 적용되는 그래픽 API으로, 모든 데스크탑 플랫폼과 거의 모든 모바일과 임베디드 플랫폼에 구현되어 있습니다. Qt 라이브러리는 사용자가 응용프로그램에 OpenGL을 통합하는 걸 도와주는 많은 클래스들을 포함하고 있습니다.
* "OpenGL in QtGui":https://doc.qt.io/qt-5.1/qtgui/qtgui-index.html - OpenGL이 Qt GUI 모듈과 통합하는 방법에 대한 개요.
* [https://doc.qt.io/qt-5.1/qtgui/qtgui-index.html OpenGL in QtGui] - OpenGL이 Qt GUI 모듈과 통합하는 방법에 대한 개요.
* "OpenGL and Qt Quick 2.0":https://doc.qt.io/qt-5.1/qtquick/qtquick-visualcanvas-scenegraph.html#mixing-scene-graph-and-opengl - OpenGL을 Qt Quick 2.0 scene graph로 통합하는 방법.
* [https://doc.qt.io/qt-5.1/qtquick/qtquick-visualcanvas-scenegraph.html#mixing-scene-graph-and-opengl OpenGL and Qt Quick 2.0] - OpenGL을 Qt Quick 2.0 scene graph로 통합하는 방법.
* "www.khronos.org/opengl":http://www.khronos.org/opengl - 공식 OpenGL 페이지.
* [http://www.khronos.org/opengl www.khronos.org/opengl] - 공식 OpenGL 페이지.


Qt 5.0 이전에, Qt에서의 OpenGL 지원은 "Qt OpenGL":https://doc.qt.io/qt-5.1/qtdoc/addons.html#qt-opengl-module 모듈을 통해 처리되었습니다. 이 모듈은 아직 남아있지만, 새 코드는 Qt GUI 모듈의 새로운 클래스를 사용하도록 해야 합니다.
Qt 5.0 이전에, Qt에서의 OpenGL 지원은 [https://doc.qt.io/qt-5.1/qtdoc/addons.html#qt-opengl-module Qt OpenGL] 모듈을 통해 처리되었습니다. 이 모듈은 아직 남아있지만, 새 코드는 Qt GUI 모듈의 새로운 클래스를 사용하도록 해야 합니다.


= Qt Quick scene 그래프 =
= Qt Quick scene 그래프 =
Line 38: Line 38:
이 scene graph는 item scene을 그래픽으로 표현한 것입니다. 그래픽 레벨의 deep copy로 생각할 수 있으며, 모든 해당 항목을 렌터링하기 위한 충분한 정보를 포함하는 독립된 구조체입니다. 한 번 설정되면, 항목의 상태와 별개로 조작되고 렌더링 될 수 있습니다. 많은 플랫폼에서, scene graph는 GUI 스레드가 다음 프레임의 상태를 준비하는 동안, 전용 렌더링 스레드에서 렌더링 되기도 합니다.
이 scene graph는 item scene을 그래픽으로 표현한 것입니다. 그래픽 레벨의 deep copy로 생각할 수 있으며, 모든 해당 항목을 렌터링하기 위한 충분한 정보를 포함하는 독립된 구조체입니다. 한 번 설정되면, 항목의 상태와 별개로 조작되고 렌더링 될 수 있습니다. 많은 플랫폼에서, scene graph는 GUI 스레드가 다음 프레임의 상태를 준비하는 동안, 전용 렌더링 스레드에서 렌더링 되기도 합니다.
Scene graph는 여러분의 QML 파일에 QtQuick 2.0 을 import 할 때 사용되며, 실행을 위해 QQuickView 를 사용합니다.
Scene graph는 여러분의 QML 파일에 QtQuick 2.0 을 import 할 때 사용되며, 실행을 위해 QQuickView 를 사용합니다.
* "Qt Quick Scene Graph":https://doc.qt.io/qt-5.1/qtquick/qtquick-visualcanvas-scenegraph.html - Qt Quick Scene Graph 아키텍쳐의 개요.
* [https://doc.qt.io/qt-5.1/qtquick/qtquick-visualcanvas-scenegraph.html Qt Quick Scene Graph] - Qt Quick Scene Graph 아키텍쳐의 개요.
* "Scene Graph and Rendering":https://doc.qt.io/qt-5.1/qtquick/qtquick-visualcanvas-scenegraph.html#scene-graph-and-rendering - 각 프레임의 렌더링 Breakdown.
* [https://doc.qt.io/qt-5.1/qtquick/qtquick-visualcanvas-scenegraph.html#scene-graph-and-rendering Scene Graph and Rendering] - 각 프레임의 렌더링 Breakdown.


Qt Quick은, Qt Quick scene graph가 렌더링되기 전후로 각각 발생되는 QQuickWindow::beforeRendering() 이나 QQuickWindow::afterRendering() 신호에 연결함으로써, raw OpenGL 렌더링과 혼합될 수 있습니다. 이 신호들은 렌더링 스레드(가능한 경우)에서 발생되며, 이 연결들의 방향을 지정해야 합니다.
Qt Quick은, Qt Quick scene graph가 렌더링되기 전후로 각각 발생되는 QQuickWindow::beforeRendering() 이나 QQuickWindow::afterRendering() 신호에 연결함으로써, raw OpenGL 렌더링과 혼합될 수 있습니다. 이 신호들은 렌더링 스레드(가능한 경우)에서 발생되며, 이 연결들의 방향을 지정해야 합니다.
Line 45: Line 45:
= 인쇄 =
= 인쇄 =


Qt는 로컬 또는 네트워크의 실제 프린터에 직접 인쇄하는 것과 PDF 출력물 생성하는 것 둘 다 지원합니다. Qt로 프린트하는 방법은 "Qt Print Support ":https://doc.qt.io/qt-5.1/qtprintsupport/qtprintsupport-index.html 페이지에 상세히 설명되어 있습니다.
Qt는 로컬 또는 네트워크의 실제 프린터에 직접 인쇄하는 것과 PDF 출력물 생성하는 것 둘 다 지원합니다. Qt로 프린트하는 방법은 [https://doc.qt.io/qt-5.1/qtprintsupport/qtprintsupport-index.html Qt Print Support ] 페이지에 상세히 설명되어 있습니다.
여러분의 응용프로그램이나 라이브러리에서 Qt 인쇄 클래스에 대한 접근을 가능하게 하려면, "Qt Print Support ":https://doc.qt.io/qt-5.1/qtprintsupport/qtprintsupport-index.html 모듈 페이지를 참고하십시오.
여러분의 응용프로그램이나 라이브러리에서 Qt 인쇄 클래스에 대한 접근을 가능하게 하려면, [https://doc.qt.io/qt-5.1/qtprintsupport/qtprintsupport-index.html Qt Print Support ] 모듈 페이지를 참고하십시오.


= 이미지 =
= 이미지 =


Qt는 "QImage":https://doc.qt.io/qt-5.1/qtgui/qimage.html 클래스를 통해서 이미지의 읽기, 쓰기, 조작의 편의를 지원합니다. 또한, 이미지를 불러오고 저장하는 방법을 세밀하게 조정하려면, QImageReader 와 QImageWriter 클래스를 각각 사용할 수 있습니다. Qt에서 지원하지 않는, 더 많은 이미지 형식에 대한 지원을 추가하려면, QImageIOHandler 과 QImageIOPlugin을 사용하여 이미지 형식 플러그인을 생성할 수 있습니다.
Qt는 [https://doc.qt.io/qt-5.1/qtgui/qimage.html QImage] 클래스를 통해서 이미지의 읽기, 쓰기, 조작의 편의를 지원합니다. 또한, 이미지를 불러오고 저장하는 방법을 세밀하게 조정하려면, QImageReader 와 QImageWriter 클래스를 각각 사용할 수 있습니다. Qt에서 지원하지 않는, 더 많은 이미지 형식에 대한 지원을 추가하려면, QImageIOHandler 과 QImageIOPlugin을 사용하여 이미지 형식 플러그인을 생성할 수 있습니다.
더 많은 정보는, "Reading and Writing Image Files":https://doc.qt.io/qt-5.1/qtgui/paintsystem-images.html 페이지를 참고하십시오.
더 많은 정보는, [https://doc.qt.io/qt-5.1/qtgui/paintsystem-images.html Reading and Writing Image Files] 페이지를 참고하십시오.


[[Category:Developing_with_Qt]]
[[Category:Developing_with_Qt]]

Revision as of 08:38, 4 March 2015

This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

한국어 | 영어 원문

그래픽

Qt 5에서의 그래픽은 주로 명령식 QPainter API 또는 Qt의 선언적 UI 언어인 Qt Quick과 이의 scene graph 뒷단을 통해서 이루어집니다. Qt 5의 그래픽 기능은 다양한 이미지 형식을 읽고 저장하는 것 뿐 아니라 인쇄하는 것 까지도 포함하고 있습니다.

QPainter의 2D 그래픽

QPainter 서로 다른 표면이나 QPaintDevice 인스턴스들 (QImage, QOpenGLPaintDevice, QWidget, 그리고 QPrinter 와 같은) 위에 텍스트와 이미지, 그리고 벡터 그래픽을 그리기 위한 API를 제공합니다. 실제 그리는 작업은 QPaintDevice의 QPaintEngine에서 일어납니다. 소프트웨어 rasterizer 와 OpenGL (ES) 2.0 뒷단은 가장 중요한 두 가지 QPaintEngine 구현입니다. 이 Raster paint 엔진은 Qt의 소프트웨어 rasterizer이며, QImage 또는 QWidget 위에 그릴 때 사용됩니다. OpenGL paint engine 상에서 이 엔진의 강점은 antialiasing이 활성화 되었을 때의 높은 품질과, 완벽한 기능 집합입니다.

  • Paint System - QPainter 클래스와 아키텍쳐의 개요.
  • Coordinate System - QPainter의 좌표 시스템이 어떻게 동작하는지에 대해 설명합니다.
  • Drawing and Filling - QPainter가 어떻게 벡터의 모양을 채우고 테두리를 그리는지에 대해 설명합니다.

QPainter에서 가장 중요한 렌더링 대상은 다음과 같습니다:

  • QImage - 픽셀에 직접 접근하는 하드웨어 독립적 이미지 표현. QPainter는 QImage 인스턴스를 그리기 위해 소프트웨어 rasterizer 를 사용할 것입니다.
  • QPixmap - 화면 표시에 적합한 이미지 표현. QPainter는 QPixmap 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용할 것입니다..
  • QOpenGLPaintDevice - 현 OpenGL (ES) 2.0 컨텐츠로 렌더링하는 페인트 장치. QPainter는 QOpenGLPaintDevice 인스턴스를 그리기 위해 하드웨어 가속 OpenGL 호출을 사용합니다.
  • QBackingStore - 최상위 윈도우에 대한 백 버퍼. QPainter는 QBackingStore 인스턴스를 그리기 위해 소프트웨어 rasterizer를 우선적으로 사용합니다.
  • QWidget - pre-Qt Quick 사용자 인터페이스 클래스를 위한 기본클래스. QPainter는 QBackingStore를 이용하여 위젯을 렌더링 할 것입니다.

QPainter 와 관련 classes 들은 Qt GUI 모듈의 일부로, Qt GUI 페이지에 더 자세한 내용이 설명되어 있습니다.

OpenGL 과 3D

OpenGL은 하드웨어 가속과 3D 그래픽에 가장 널리 적용되는 그래픽 API으로, 모든 데스크탑 플랫폼과 거의 모든 모바일과 임베디드 플랫폼에 구현되어 있습니다. Qt 라이브러리는 사용자가 응용프로그램에 OpenGL을 통합하는 걸 도와주는 많은 클래스들을 포함하고 있습니다.

Qt 5.0 이전에, Qt에서의 OpenGL 지원은 Qt OpenGL 모듈을 통해 처리되었습니다. 이 모듈은 아직 남아있지만, 새 코드는 Qt GUI 모듈의 새로운 클래스를 사용하도록 해야 합니다.

Qt Quick scene 그래프

Qt Quick 2.0에선 렌더링을 위한 OpenGL (ES) 2.0 scene graph를 소개합니다. 이는 Qt Quick 2.0의 성능을 대체적으로 향상시켰으며, 이전 버전에 사용되었던 QGraphicsView/QPainter-기반 접근 방식과 비교하면 눈에 띄게 차이가 납니다. 이 scene graph는 item scene을 그래픽으로 표현한 것입니다. 그래픽 레벨의 deep copy로 생각할 수 있으며, 모든 해당 항목을 렌터링하기 위한 충분한 정보를 포함하는 독립된 구조체입니다. 한 번 설정되면, 항목의 상태와 별개로 조작되고 렌더링 될 수 있습니다. 많은 플랫폼에서, scene graph는 GUI 스레드가 다음 프레임의 상태를 준비하는 동안, 전용 렌더링 스레드에서 렌더링 되기도 합니다. Scene graph는 여러분의 QML 파일에 QtQuick 2.0 을 import 할 때 사용되며, 실행을 위해 QQuickView 를 사용합니다.

Qt Quick은, Qt Quick scene graph가 렌더링되기 전후로 각각 발생되는 QQuickWindow::beforeRendering() 이나 QQuickWindow::afterRendering() 신호에 연결함으로써, raw OpenGL 렌더링과 혼합될 수 있습니다. 이 신호들은 렌더링 스레드(가능한 경우)에서 발생되며, 이 연결들의 방향을 지정해야 합니다.

인쇄

Qt는 로컬 또는 네트워크의 실제 프린터에 직접 인쇄하는 것과 PDF 출력물 생성하는 것 둘 다 지원합니다. Qt로 프린트하는 방법은 Qt Print Support 페이지에 상세히 설명되어 있습니다. 여러분의 응용프로그램이나 라이브러리에서 Qt 인쇄 클래스에 대한 접근을 가능하게 하려면, Qt Print Support 모듈 페이지를 참고하십시오.

이미지

Qt는 QImage 클래스를 통해서 이미지의 읽기, 쓰기, 조작의 편의를 지원합니다. 또한, 이미지를 불러오고 저장하는 방법을 세밀하게 조정하려면, QImageReader 와 QImageWriter 클래스를 각각 사용할 수 있습니다. Qt에서 지원하지 않는, 더 많은 이미지 형식에 대한 지원을 추가하려면, QImageIOHandler 과 QImageIOPlugin을 사용하여 이미지 형식 플러그인을 생성할 수 있습니다. 더 많은 정보는, Reading and Writing Image Files 페이지를 참고하십시오.