2012-01-14 19 views
5

Dichiarato bitmap che eraImpossibile convertire implicitamente il tipo 'System.Drawing.Image' a 'System.Drawing.Bitmap'`

private Bitmap img1 = null; 
private Bitmap img2 = null; 

l'immagine sarà putt dopo aver selezionato da OpenFileDialog.
le immagini selezionate sono state collocate in un array.

imgName = openFD.FileNames; 

quindi pulsante1 per visualizzare queste immagini.

pictureBox1.Image = Image.FromFile(imgName[0]); 
pictureBox2.Image = Image.FromFile(imgName[1]); 

ho sostituito il codice button1 con questo

img1 = Image.FromFile(imgName[0]); 
img2 = Image.FromFile(imgName[1]); 

ma un errore si verifica

Impossibile convertire implicitamente il tipo 'System.Drawing.Image' a 'System.Drawing.Bitmap'

Proverei a cambiare il codice in img1 = Bitmap.FromFile(imgName[0]);. ma ha ancora lo stesso errore.
Qualche suggerimento su come correggere o fare ciò giusto?

+1

Mentre una bitmap è sempre considerata un'immagine, un'immagine non è necessariamente una bitmap. Fornisce supporto futuro per altri tipi di immagini. Pertanto, non dovresti provare a forzare un'immagine come bitmap. –

risposta

7
img1 = new Bitmap(imgName[0]); 
img2 = new Bitmap(imgName[1]); 
2
img1 = (Bitmap) Image.FromFile(imgName[0]); 
img2 = (Bitmap) Image.FromFile(imgName[1]); 

Come il messaggio di errore dice che non si può implicitamente fare questo è necessario lanciare esplicitamente a Bitmap

Modifica

Sulla base dei commenti qui sotto vorrei suggerire o andare con La risposta di icktoofay vale a dire usare il costruttore di Bitmap o se puoi usare direttamente la classe Image invece di usare Bitmap puoi anche andare con quello

+3

Non puoi semplicemente trasmettere le cose a quello che vuoi. Questa è programmazione, non magia. 'Bitmap' eredita da' Image', ma non viceversa. Ciò significa che non è possibile convertire implicitamente un oggetto 'Immagine' in un oggetto' Bitmap'. Il casting dice semplicemente al compilatore di stare zitto, non risolve il problema. –

+0

Quindi quale sarebbe la strada giusta qui. Utilizzare il Costruttore Bitmap o utilizzare direttamente la classe Image? Immagino che il modo giusto sarebbe usare Image a meno che tu non sia sicuro che il file caricato sia un Bitmap. Cosa ne pensi? –

+0

Difficile da dire. Se hai bisogno di un 'Bitmap', dovrai creare un'istanza della classe' Bitmap', probabilmente usando il costruttore. Altrimenti, dichiara la variabile a cui stai assegnando ('img1' e' img2') come oggetti della classe 'Image' e i tuoi problemi vanno via. Il punto è che i calchi sono raramente la risposta corretta. Il compilatore sta cercando di avvisarti di un potenziale problema: dovresti dare ascolto ai suoi suggerimenti. –

Problemi correlati