2012-01-14 79 views
5

Declarado un mapa de bits que eraNo se puede convertir implícitamente el tipo 'System.Drawing.Image' a 'System.Drawing.Bitmap'`

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

la imagen se putts después de seleccionarlo de OpenFileDialog.
las imágenes seleccionadas se colocaron en una matriz.

imgName = openFD.FileNames; 

then button1 para mostrar estas imágenes.

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

He sustituido el código botón1 con este

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

pero se produce un error

No se puede convertir implícitamente el tipo 'System.Drawing.Image' a 'System.Drawing.Bitmap'

Intentaré cambiar el código a img1 = Bitmap.FromFile(imgName[0]);. pero aún tiene el mismo error.
Cualquier sugerencia de cómo corregir o hacer esto ¿verdad?

+1

Si bien un mapa de bits siempre se considera una imagen, una imagen no es necesariamente un mapa de bits. Proporciona soporte futuro para otros tipos de imágenes. Por lo tanto, no debe intentar obligar a una Imagen a ser un mapa de bits. –

Respuesta

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

Como el mensaje de error dice que no puede implícitamente hacer esto, es necesario especificar explícitamente que Bitmap

Editar

Con base en los comentarios a continuación me permito sugerir o bien ir con Respuesta de icktoofay, es decir, use el constructor Bitmap o si puede usar la clase Image directamente en lugar de usar Bitmap, también puede ir con

+3

No puedes simplemente lanzar cosas a lo que quieras. Esto es programación, no magia. 'Bitmap' hereda de' Image', pero no al revés. Eso significa que no puede convertir implícitamente un objeto 'Imagen' a un objeto 'Bitmap'. Casting solo le dice al compilador que se calle, no resuelve el problema. –

+0

Entonces, ¿cuál sería el camino correcto aquí? Use el constructor de mapa de bits o use la clase de imagen directamente? Supongo que sería correcto usar Image a menos que esté seguro de que el archivo cargado es un mapa de bits. ¿Qué piensas? –

+0

Es difícil de decir. Si necesita un 'Bitmap', entonces necesitará crear una instancia de la clase' Bitmap', probablemente usando el constructor. De lo contrario, declare la variable que está asignando ('img1' y' img2') como objetos de la clase 'Image' y sus problemas desaparecerán. El punto es que los moldes rara vez son la respuesta correcta. El compilador intenta advertirle sobre un posible problema: debe prestar atención a sus sugerencias. –

Cuestiones relacionadas