2010-01-19 18 views
8

Tengo una imagen de mapa de bits que deseo cargar dinámicamente. Pero no puedo cargarlo.Cargar un CBitmap dinámicamente

CBitmap bmp; 

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

parece que no funciona. ¿Puede alguien ayudarme?

Gracias.

Respuesta

12

También puede intentar algo como esto:

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

Para cargar un mapa de bits desde un archivo, desea usar LoadImage con el indicador LR_LOADFROMFILE.

0

CImage no funciona con png última vez que probé/facturado. Eche un vistazo a CxImage - http://www.codeproject.com/KB/graphics/cximage.aspx.

+0

Soporta BMP, jpg, gif y png. http://msdn.microsoft.com/en-us/library/d06f3fhw(VS.80).aspx –

+0

Tuve que buscarlo, y estás en lo correcto en cuanto a la carga desde un archivo. Mi recuerdo proviene de que es imposible cargar pngs de los recursos, ya que CImage :: LoadFromResource() usa :: LoadImage() mientras que Load() usa GDI +. – Roel

0

Podría ser tan simple como olvidarse de la barra invertida. En lugar de

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

uso

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

De lo contrario estás pasando una ruta no válida al método LoadBitmap.

+0

No funciona incluso después de dar la ruta "c: \\ aeimg". – Ashish

+0

No es necesario votar a la baja, hizo una sugerencia perfectamente válida. –

2

Según la documentación de CBitmap: LoadBitmap() la función toma el identificador de recursos del mapa de bits o la identificación de recursos del mapa de bits.

No puede especificar la ruta del archivo de mapa de bits.

E.g.

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

y asegúrese de que resource.h no tiene ninguna entrada de MYBMP lo contrario durante el procesamiento previo a su reemplazado por id LoadBitmap() y en última instancia fallará ya que la aplicación no puede localizar el recurso como FindResource() falla.

Ahora hacer esto:

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

Definitivamente va a cargar el mapa de bits.

1

CBitmap no admite la lectura directa de un archivo .bmp. En su lugar, puede hacer uso de la clase CImage como se sugiere en otras respuestas. Tendrá que incluir atlimage.h en el código para hacer que el trabajo CImage:

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

Otra forma es cargar la imagen utilizando LoadImage API de Win32 y luego adjuntar CBitmap a que:

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