티스토리 툴바

기타 다른 프로그램에서는 사진 출력하기 간단했던 것같은데, MFC를 사용하다보니 BMP 외부파일 출력하기 참 귀찮다.
(물론 필자가 MFC도 거의 처음이고 잘 몰라서 그렇다고 생각한다.)

그래서 급하게라도 사용했던 BMP 출력하는 법을 적어본다.

1. OnDraw나 Paint에서 CDC* pDC를 알고 있을때, 해당 DC에 외부 BMP파일을 출력하는 방법
	HANDLE bmp;
	CBitmap cBitmap;
	BITMAP bmpinfo;
	CDC memdc;
	bmp = LoadImage(NULL, "images/foodExplain.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
	cBitmap.Attach( bmp ); 
	cBitmap.GetBitmap( &bmpinfo ); 
	memdc.CreateCompatibleDC(pDC);
	memdc.SelectObject(bmp);
	pDC->BitBlt(x,y,bmpinfo.bmWidth,bmpinfo.bmHeight, &memdc, 0 ,0, SRCCOPY);
 //x,y는 그리는 첫번째 위치
 memdc.DeleteDC();
	cBitmap.DeleteObject();
위와같은 상태는 OnDrawPaint등에서 dc를 알고 있을 경우 출력이 가능하다.

2. Dialog에서 Picture Control을 설정한 상태, 그리고 리소스 뷰에서 BMP파일을 IMPORT한 상태일 경우
	HBITMAP hBmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(SUGARBMP),IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
 //SUGARBMP는 IMPORT된 BMP의 ID
	spices_img1.SetBitmap(hBmp);

3. Dialog에서 Picture Control을 설정한 상태, 그리고 외부 BMP파일 불러오기.

HBITMAP hBmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"images/noIMG.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
img1.SetBitmap(hBmp);
//img1은 Picture Control의 ID, "images/noIMG.bmp"은 파일의 상대경로

결국, Picture Control을 이용하면 아주 코드가 간단해진다.

참고로 BitBlt를 사용하게 되면 크기가 원본 크기는 바뀌지 않고,
특정 Size에서 크기를 고정시키고 싶다면 StretchBlt를 사용하면 된다.

ex) 크기를 고정시키는 예제 [단 CDC * pDC를 알고 있어야 아래 처럼 활용 가능]

 CBitmap cBitmap;
 BITMAP bmpinfo;
 CDC memdc;
	HANDLE bmp = LoadImage(NULL,"image/abcd.bmp",IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
 cBitmap.Attach( bmp ); 
	cBitmap.GetBitmap( &bmpinfo ); 
	memdc.CreateCompatibleDC(pDC);
	memdc.SelectObject(bmp);
	//비트맵 화면 사진크기 맞추기
	pDC->StretchBlt(x,y,cx,cy,&memdc,0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,SRCCOPY);
	memdc.DeleteDC();
	cBitmap.DeleteObject();
 //(x,y)는 시작위치, (cx,cy)는 이미지 크기
Creative Commons License
Creative Commons License
TRACKBACK ADDRESS
http://shinluckyarchive.tistory.com/trackback/400 관련글 쓰기
wrote at 2009/08/31 16:46
우왕...저에게는 완전 별세계네요.. MFC가 뭔지도 모르겠어요..^^;;
wrote at 2009/09/04 15:08
ㅋ, 프로그래머가 아니라면 뭐 볼필요도 없죠 ㅎ
wrote at 2009/08/31 17:54
오 김군에게 필요한 소스였어요 +_+
wrote at 2009/09/04 15:08
오오, 도움이 되신다니 다행 ㅋ
wrote at 2009/09/02 16:08
이런 정보 사랑함..ㅠㅠㅋ
wrote at 2009/09/04 15:12
ㅋ, 봐주셔서 감사해용
^^ 
wrote at 2010/11/22 19:42
저에게 급필요한 소스네요. 책에서는 리소스에 등록한 놈만 쓸수 있어서
~!~! 
wrote at 2011/05/13 21:32
picture controll 겹치게 사용할수도 있나요? 우선순위 저해서 상위 아래 이렇게 보인다는 거나..
초보자 
wrote at 2012/02/21 20:49
감사해요~많이 도움이 됩니다.
이름 :
비밀번호 :
홈사이트 :
비밀글 :
*1  ... *143  *144  *145  *146  *147  *148  *149  *150  *151  ... *165 
Shinlucky's Archive (165)
Action Script (43)
ARM Processor (23)
C,C++,Embedded C (31)
Database (8)
Design (7)
Etc (6)
Java/Android (7)
Network/VoIP (2)
SPARC Assembler (21)
System Programming (1)
Win32/MFC (9)
입코딩으로하는 ERROR REPORT (4)
IT 용어관련 (3)
count total 68,163, today 21, yesterday 147