2010-01-19 18 views
8

Ho un'immagine bitmap che voglio caricare dinamicamente. Ma non riesco a caricarlo.Carica dinamicamente un CBitmap

CBitmap bmp; 

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

non sembra funzionare. Qualcuno può aiutarmi per favore.

Grazie.

risposta

12

Si può anche provare qualcosa di simile:

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

Per caricare una bitmap da un file, si desidera utilizzare LoadImage con il flag LR_LOADFROMFILE.

0

CImage non funziona con i png ultima volta che ho provato/controllato. Dai un'occhiata a CxImage - http://www.codeproject.com/KB/graphics/cximage.aspx.

+0

Esso supporta bmp, jpg, gif e png. http://msdn.microsoft.com/en-us/library/d06f3fhw(VS.80).aspx –

+0

Ho dovuto cercare, e sei corretto per quanto riguarda il caricamento da un file. Il mio ricordo deriva dal fatto che è impossibile caricare file PNG dalle risorse, poiché CImage :: LoadFromResource() usa :: LoadImage() mentre Load() usa GDI +. – Roel

0

Potrebbe essere semplice come dimenticare di scappare dal backslash. Invece di

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

uso

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

In caso contrario si sta passando un percorso non valido al metodo LoadBitmap.

+0

Non funziona anche dopo aver assegnato il percorso "c: \\ aeimg". – Ashish

+0

Non c'è bisogno di sottovalutare, ha fatto un suggerimento perfettamente valido. –

2

In base alla documentazione di CBitmap: la funzione LoadBitmap() accetta l'identificatore di risorsa della bitmap o id risorsa della bitmap.

Non è possibile specificare il percorso del file bitmap.

E.g.

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

e assicurarsi che resource.h non ha alcun ingresso di MYBMP altrimenti durante la pre-elaborazione propria sostituito da id e, infine, LoadBitmap() fallirà dato che l'applicazione non è in grado di individuare la risorsa come FindResource() fallisce.

Ora fare questo:

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

Sarà sicuramente caricare il bitmap.

1

CBitmap non supporta la lettura diretta da un file .bmp. Puoi invece utilizzare la classe CImage come suggerito in altre risposte. Avrete bisogno di includere atlimage.h nel codice per rendere CImage lavoro:

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

Un altro modo è quello di caricare l'immagine utilizzando LoadImage API Win32 e quindi collegare CBitmap a che:

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