다양한 형식의 파일을 직접 로드하는 것을 지원하며, 로드하거나 생성한 이미지에 대한 DC 를 구해 직접 그리기가 쉬우며, DC에 출력할 내용을 외부 파일(BMP, JPEG, ..) 로 저장하는 메서드도 제공하므로, GDI 를 이용하여 그린 결과를 다양한 형식의 파일로 저장할 수 있다. 또한 CImage 클래스는 MFC 가 제공하는 ATL 클래스 중 하나로서, 내부적으로  COM 객체로 구현되어 있다. C++ 의 클래스가 논리적인 코드를 객체화한 개념이라면, COM 은 실행 바이너리 파일 단위(모듈단위) 로 객체화한 것이라고 할 수 있으며, 메서드가 반환하는 값은 HRESULT 형이다. FAILED() 매크로나 SUCCEEDED() 매크로를 이용해 오류를 확인할 수 있다. CImage::Load() 메서드는 이미지 파일을 로드하여 DIB 이미지를 생성한다. 유사한 함수로 LoadFromResource() 메서드가 있으며, 이 함수는 첫번째 인자로 응용 프로그램의 인스턴스 핸들을 주는 게 다르다.


Load() 사용법

void CImgOutDemoView::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 // TODO: 여기에 메시지 처리기 코드를 추가합니다.
 // 그리기 메시지에 대해서는 CView::OnPaint()을(를) 호출하지 마십시오.
CImage Image;
HRESULT hResult = Image.Load(_T("image1.jpg"));
Image.BitBlt(dc.m_hDC, 0,0);

}

LoadFromResouce() 사용법
/*
 CImage Image;
 Image.LoadFromResource(AfxGetInstanceHandle(), IDB_image1);
 Image.BitBlt(dc.m_hDC, 0,0);
*/

void CImgOutDemoView::OnPaint()
{
 CPaintDC dc(this); // device context for painting

 CImage Image;
 Image.LoadFromResource(AfxGetInstanceHandle(), IDB_image1);
 //비트맵인것을 유념할것

 //비트맵 이미지에 대한 핸들을 가져와서 DC를 생성한다.
 CDC* pDC = CDC::FromHandle(Image.GetDC());
 // 이 이미지 DC에 문자열을 출력한다.
 pDC->SetBkMode(TRANSPARENT); //배경을 투명하게 한다.
 pDC->TextOut(200,30,_T("CImage Sample!"));
 Image.ReleaseDC(); //GetDC 와 쌍으로 붙어다님.

 Image.BitBlt(dc.m_hDC, 0,0);

}



'Windows > MFC' 카테고리의 다른 글

GDI 고급  (0) 2011.11.15
윈도우 화면 캡쳐하기  (0) 2011.11.14
고급 이미지 출력 함수 ( TransparentBlt() , AlphaBlend() )  (0) 2011.11.14
비트맵과 이미지 처리  (0) 2011.11.14
DrawText() 함수 예제 및 연습  (0) 2011.11.13

+ Recent posts