본문 바로가기

Study Memos/Windows Programming

GDI+ (Section 42)

참고> blog.naver.com/tipsware/221123175566

 

1. GDI는 1990년대 초반(나랑 나이가 비슷..)에 만들어진 개념이어서 계속 발전하는 그래픽 장치의 특성을 반영하지 못함.
-> 이를 개선하기 위해 1990년대 후반에 GDI에 새로운 출력 기능이 추가된 GDI+가 등장함. (예를 들면 'AntiAlias' 기능 등)
-> GDI+를 사용하면 출력 품질을 향상시킬 수 있고 BMP가 아닌 PNG나 JPEG와 같은 이미지도 쉽게 사용 가능함.

2. GDI+ : GDI를 수정하지 않고(즉, GDI로 만들어진 기존 프로그램과의 호환성을 유지하면서) 향상된 그래픽 장치의 특성을 사용할 수 있는 추가적인 라이브러리를 제공하는 기술

3. GDI+도 GDI와 마찬가지로 Win32 API 또는 Win64 API를 통해서 작업하지만 그래픽 장치의 드라이버와 연동해서 그래픽 장치가 제공하는 좀 더 향상된 그리기 기능을 수행함.

4. GDI+를 사용하려면 GDI+용 헤더 파일과 라이브러리 파일을 소스에 포함해야 함.
ex) #include <Gdiplus.h>
    #pragma comment(lib, "gdiplus")

5. GDI+는 C++ 언어의 클래스 개념과 네임스페이스 개념을 사용하고 있기 때문에 using 문도 사용 가능
ex) using namespace Gdiplus;

6. 컴파일 속도 향상을 위해 stdafx.h 파일을 사용하는 경우에는  stdafx.h 파일에서 WIN32_LEAN_AND_MEAN define 문을 주석 처리해야 함.
-> 참고로 WIN32_LEAN_AND_MEAN 은 MFC 관련 API를 사용할지 말지 여부를 나타내는 플래그이다.
-> #define WIN32_LEAN_AND_MEAN 이면 MFC 관련 API를 사용하지 않겠다는 뜻이고,
    //#define WIN32_LEAN_AND_MEAN 이면 MFC 관련 API를 사용하겠다는 뜻이다.
-> 일반적으로 윈도우 응용 프로그램을 만들 때에는 MFC(Microsoft Foundation Class)를 사용하거나 SDK(Software Development Kit)를 사용하는 두 가지 방법이 있다.

7. GDI+ 를 사용할 경우 GDI+ 라이브러리 초기화 작업을 WinMain 함수 내에서 해주어야 함.

8. GDI+를 사용하기 위해서는 Graphics 객체를 생성해야 함
-> GDI로 그림을 그릴 때 DC를 사용한 것과 유사함.

9. GDI+는 기본적으로 'AntiAlias' 특성이 적용되어서 그림이 그려짐.

10. GDI+를 사용해서 만든 응용 프로그램의 경우 원격 접속을 하여 해당 프로그램을 사용할 때 일부 기능이 GDI와 동일하게 출력되기 떄문에 주의해야 함
-> 예를 들어, 'AntiAlias' 특성의 경우 원격 접속을 사용하면 적용되지 않음.

11. GDI+는 GDI 보다는 품질이 좋지만 그래픽 장치의 가속 효과나 다양한 기능을 사용하기는 어려움. 그래서 그래픽 장치의 하드웨어적인 특성을 최대한 사용할 수 있도록 Direct2D라는 출력 방법이 추가됨.
-> Direct2D는 Windows Vista 이상에서 사용 가능

반응형