다양한 형식의 파일을 직접 로드하는 것을 지원하며, 로드하거나 생성한 이미지에 대한 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 |