2010-01-19 5 views
8

동적으로로드 할 비트 맵 이미지가 있습니다. 하지만로드 할 수 없습니다.동적으로 CBitmap로드

CBitmap bmp; 

bmp.LoadBitmap("c:\\aeimg"); 

작동하지 않는 것 같습니다. 누군가 나를 도울 수 있습니까?

감사합니다.

답변

12

또한 이런 식으로 뭔가를 시도 할 수 있습니다 :

CImage image; 
image.Load(_T("C:\\image.png")); 
CBitmap bitmap; 
bitmap.Attach(image.Detach()); 
1

파일에서 비트 맵을로드하려면 LoadImageLR_LOADFROMFILE 플래그를 사용하고 싶습니다.

0

C 화상 내가 체크/시도 PNG 마지막으로 작동하지 않습니다. CxImage - http://www.codeproject.com/KB/graphics/cximage.aspx을보십시오.

+0

그것은 BMP를 지원을, jpg, gif 및 png. http://msdn.microsoft.com/en-us/library/d06f3fhw(VS.80).aspx –

+0

필자는이 파일을 살펴보고 파일에서 로딩하는 것이 올바른지 확인했습니다. CImage :: LoadFromResource()는 LoadImage()를 사용하고 Load()는 GDI +를 사용하기 때문에 리소스에서 png를로드 할 수 없다는 내 기억이 있습니다. – Roel

0

백 슬래시를 벗어나는 것을 잊어 버리는 것처럼 간단 할 수 있습니다. 대신 그렇지 않으면 당신이 LoadBitmap 방법에 잘못된 경로를 전달하는

bmp.LoadBitmap("c:\\aeimg"); 

사용

bmp.LoadBitmap("c:\aeimg"); 

의.

+0

"c : \\ aeimg"경로를 지정한 후에도 작동하지 않습니다. – Ashish

+0

그는 투표를 할 필요가 없으며 완벽하게 유효한 제안을했습니다. –

2

CBitmap 설명서에 따르면 : LoadBitmap() 함수는 비트 맵의 ​​리소스 식별자 또는 비트 맵의 ​​리소스 ID를 사용합니다.

비트 맵 파일의 경로를 지정할 수 없습니다.

예. 그렇지 않으면 전처리 동안

과 및 Resource.h이 MYBMP의 항목이 없는지 확인

MyProject.rc 
------------ 
MYBMP  BITMAP "res\myimage.bmp" 

ID로 대체 FindResource()이 실패로 응용 프로그램 리소스를 찾을 수 있기 때문에 궁극적으로 LoadBitmap() 실패합니다.

CBitmap bmp; 
bmp.LoadBitmap(L"MYBMP"); 

그것은 확실히 비트 맵을로드합니다 :

지금이 작업을 수행.

1

CBitmap은 .bmp 파일에서 직접 읽는 것을 지원하지 않습니다. 다른 답변에서 제안 된대로 CImage 클래스를 대신 사용할 수 있습니다. 당신은 CImage 작동하도록 코드에서 atlimage.h을 포함해야합니다 :

#include <atlimage.h> 
: 
CImage img; 
img.Load (_T("C:\\image.bmp")); 
CBitmap bitmap; 
bitmap.Attach(img.Detach()); 

또 다른 방법은 이미지 LoadImage의 Win32 API를 사용하고 그 다음에 CBitmap 부착로드하는 것입니다 :

HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,"c:\\image.bmp", 
             IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); 
if (hBitmap != NULL) 
    bitmap.Attach(hBitmap);