본문으로 바로가기

비트맵 파일 이미지 출력

category 소프트웨어/MFC 2018. 9. 11. 10:44
728x90
반응형

응용 프로그램의 배경 이미지를 변경하고자 할 경우 실행 파일에 비트맵 이미지를 준비하고 해당 파일을 프로그램 실행 시 읽어 들여 출력하는 예를 설명하겠습니다.


다이얼로그 기반 응용프로그램 작성을 기준으로 설명 드립니다. 뷰 기반 응용 프로그램은 View 클래스에서 수행하시면 가능합니다. 먼저 다이얼로그 대화상자에 할당한 클래스의 헤더 파일에서 클래스 이름을 선택하고 오른쪽 [속성] 탭을 선택하신 후 WM_PAINT 메세지를 처리하는 OnPaint 함수를 추가합니다.

소스 파일을 선택하고 방금전에 추가한 OnPaint 함수에 아래의 소스와 같이 else 구문의 내용을 추가해 주시기 바랍니다. 


void CTestDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트입니다.

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);

		// 클라이언트 사각형에서 아이콘을 가운데에 맞춥니다.
		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;

		// 아이콘을 그립니다.
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트

		CDC MemDC;
		CBitmap bmp;

		CRect rct;
		this->GetClientRect(&rct);

		CString fname;
		MemDC.CreateCompatibleDC(&dc);

		HBITMAP hBitmap;

		fname.Format(_T("bkimg2.bmp"));

		hBitmap = (HBITMAP)LoadImage(NULL, fname, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE);
		bmp.Attach(hBitmap);

		MemDC.SelectObject(&bmp);

		// dialog surface.
		dc.BitBlt(0, 0, rct.Width(), rct.Height(), &MemDC, 0, 0, SRCCOPY);
	}
}


여기서 fname은 실행 폴더에 있는 비트맵 이미지 파일의 이름을 지정합니다. 



다음 그림은 다이얼로그 대화상자에 배경 이미지를 삽입한 결과입니다.




728x90
반응형