본문 바로가기

Study Memos/Windows Programming

Direct2D로 그림 파일을 읽어 출력하기 (Section 44)

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

 

1. Direct2D에서 제공하는 디코더(Decoder)를 사용하면 다양한 이미지 파일을 읽어서 비트맵 형식으로 구성 할 수 있음.

2. WIC(Windows Imaging Component) : 각종 이미지(영상)를 압축하거나 해제 또는 변환하는 컴포넌트
-> WIC를 사용하여 읽은 이미지 정보는 Direct2D에서 사용 가능한 형식으로 변환 가능.
-> 즉, WIC 객체로 이미지 파일을 읽어서 Direct2D 용 이미지로 변환하고 사용하면 됨.

3. WIC는 d2d1.h 헤더파일에 포함되어 있지 않음
-> Direct2D를 사용한다고 해서 무조건 WIC를 쓰는 건 아니기 때문.
-> WIC를 사용하려면 Wincodec.h 헤더파일을 포함해야 함.

4. 일반적으로 Direct2D를 작업하는데 피요한 여러 가지 객체를 생성할 때에는 ID2DFactory 객체를 생성해두고 작업함.
   그러나 ID2DFactory 객체는 WIC를 작업하는데 필요한 객체를 생성하지 못하기 때문에
   WIC 객체를 생성하기 위해선 IWICImagingFactory 객체를 추가로 생성해야 함.

5. IWICImagingFactory 객체를 다 사용하고 나면 이 객체의 Release() 함수를 호출해서 정리하면 됨.

6. PNG 형식의 이미지 파일을 읽으려면...
-> 이미지가 PNG 형식으로 압축되어 있기 때문에 비트맵 형식으로 압축을 해제하는 디코더(Decoder) 객체를 생성해야 함.
-> IWICImagingFactory 객체의 CreateDecoderFromFilename() 함수 호출


7. 파일 형식에 따라 여러 개의 그림이 한 파일에 있을수도 있기 때문에 특정 그림을 선택해야 함.
-> Frame을 담을 IWICBitmapFrameDecode 객체를 선언하고, Decoder 객체의 GetFrame() 함수를 통해 Frame을 얻어옴.

8. GetFrame() 함수를 통해 얻은 이미지는 IWICBitmap(WIC 형식의 비트맵) 형식이기 때문에 Direct2D에서 사용하려면 ID2D1Bitmap 형식의 비트맵으로 변환해야 함.
-> IWICImagingFactory 객체의 CreateFormatConverter() 함수를 통해 IWICFormatConverter 객체를 생성
-> 생성한 IWICFormatConverter 객체를 이용해 RenderTarget의 CreateBitmapFromWicFactory() 함수 호출

반응형

'Study Memos > Windows Programming' 카테고리의 다른 글

Gaussian Blur (Section 50, 51)  (0) 2020.10.13
Win32 개발 팁  (0) 2020.10.13
Direct2D (Section 43)  (0) 2020.10.12
GDI+ (Section 42)  (0) 2020.10.12
Timer (Section 41)  (0) 2020.10.12