MFC에서 Jpg나 png 이미지 로드하고 보여주기
CBitmap 클래스 대신 CImage 클래스 로 교체
CImage 클래스중
Load() : 함수를 이용 클래스 인스턴트에 이미지 로드
Draw() : 함수를 이용 대하상자에 이미지 출력.
Destroy() : 함수를 써서 이전 이미지 언로드 시키고, 두번째 이미지를 로드하기 위한 준비
1. stdafx.h 해더에 마지막 줄에 다음을 추가
#include <atlimage.h>
2. 메인 프로그램 헤더 파일을 열어서
// CBitmap m_bmpBitmap; 주석처리
CImage m_bmpBitmap; 추가
3. 로드를 실행시킬 함수 (OnCreate 나 OnInit 함수등)에 다음 소스를 추가하자
m_bmpBitmap.Destroy();
m_bmpBitmap.Load("BackPic.png");
// 현제 대화상자 다시 그려주는 함수 로드
4. ShowBitmap() 함수 수정
void PaintDlg::ShowBitmap(CPaintDC *pdc)
{
// 포인터를 메인 대화상자 클래스 포인터로 변경
CGraphicsDlg *pWnd = (CGraphicsDlg*)GetParent();
// 대략 pWnd는 Dialog의 this 포인터를 위함..
CDC dcMem;
CRect rRect;
// 보여줄 영역을 얻는다
GetClientRect(rRect);
rRect.NormalizeRect();
// 대화상자 윈도우로 비트맵을 복사하면서 크기 조절
pWnd->m_bmpBitmap.Draw(pdc->m_hDC, rRect);
}
// 무슨 코드인지 궁금하면 Visual C++6.0 21일 완성 책을 참조..
데브피아에선
void CTestDlg::OnPaint() { if (IsIconic()) //여기서는 그려봐야 소용 없습니다. { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else // 여기서 그리셔야죠. { CPaintDC dc(this); // device context for painting dc.Rectangle(0, 0, 100, 100); CDialog::OnPaint(); } } | |
시도해 보라는.. |
'C/C++언어 > 윈도우 MFC' 카테고리의 다른 글
GDI + 로 그림을 띄우는 법, (투명색 지정 포함) (0) | 2007.09.14 |
---|---|
알송 가사창은 어떻게 만들어졌을까? (0) | 2007.09.11 |
MFC 콘솔 응용 test (0) | 2007.03.14 |
HelloMFC.cpp (0) | 2007.03.09 |
GDI Plus 라이브러리.. (0) | 2007.03.09 |