Solución:
Bitmap
hereda de Image
:
System.Drawing.Bitmap : System.Drawing.Image
{ }
Image
es una clase abstracta, esto significa:
El modificador abstracto indica que la cosa que se está modificando tiene una implementación incompleta o faltante.
Bitmap
es una clase sellada, esto significa:
Cuando se aplica a una clase, el modificador sellado evita que otras clases hereden de él.
Vea lo siguiente:
Bitmap bmp = new Bitmap(filename); // Works
Image img = new Image(); // The compiler says: "Cannot access internal constructer 'Image' here.
Esto es porque Image
no está diseñado para usarse de esta manera. Solo proporciona funcionalidad para el Bitmap
clase.
Por lo tanto, use Bitmap
cuando se trata de imágenes pixeladas, como jpeg, png, bmp, etc.
Si no espera ningún tipo específico de imagen en su método y los métodos de Image
son suficientes, utilice el más general Image
como tipo de parámetro. Este método aceptará otras clases heredadas de Image
también, por ejemplo Metafile
.
¿No estoy seguro de a qué te refieres con la diferencia?
System.Drawing.Image
es la clase base para System.Drawing.Bitmap
.
System.Drawing.Image
también es una clase abstracta, por lo que no puede crear una instancia de ella. Tendrás que crear una instancia de System.Drawing.Bitmap
solamente.
Image.FromFile
, Image.BlahBlah … devuelve su instancia de Bitmap
solamente.
Como dice claramente la documentación de MSDN sobre System.Drawing.Image
:
Una clase base abstracta que proporciona funcionalidad para las clases descendientes de mapa de bits y metarchivo.
Entonces no puedes compararlos. los System.Drawing.Bitmap
la clase es una implementación concreta del resumen System.Drawing.Image
clase.