I am confused what's the different between System.Drawing.Image
and System.Drawing.Bitmap
Can someone explain the major difference between those two types ?
And Why to use System.Drawing.Bitmap instead of System.Drawing.Image ?
I am confused what's the different between System.Drawing.Image
and System.Drawing.Bitmap
Can someone explain the major difference between those two types ?
And Why to use System.Drawing.Bitmap instead of System.Drawing.Image ?
Bitmap
inherits from Image
:
System.Drawing.Bitmap : System.Drawing.Image
{ }
Image
is an abstract class, this means:
The abstract modifier indicates that the thing being modified has a missing or incomplete implementation.
Bitmap
is a sealed class, this means:
When applied to a class, the sealed modifier prevents other classes from inheriting from it.
See the following:
Bitmap bmp = new Bitmap(filename); // Works
Image img = new Image(); // The compiler says: "Cannot access internal constructer 'Image' here.
This is because Image
is not meant to be used this way.
It just provides functionality for the Bitmap
class.
Thus use Bitmap
when dealing with pixelated images, like jpeg, png, bmp, etc.
If you expect no specific type of image in your method and the methods of Image
are sufficient, use the more general Image
as parameter type. This method will then accept other classes inheriting from Image
as well, for example Metafile
.
Bitmap
to a function that takes Image
as a parameter... since Bitmap
is an Image
, it will accept it. For example, g.DrawImage(mybitmap, 0, 0)
is valid with mybitmap
of type Bitmap
(here, g
is of type Graphics
, and DrawImage
takes Image
as a parameter). –
Trolly Image.FromFile()
directly? I have seen it used many times to only be cast to bitmap in the next step. –
Gomphosis Metafile
object. Then a cast to Bitmap
would fail. But you usually know beforehand which type of object is expected. –
Soileau Am not sure what you mean difference?
System.Drawing.Image
is the base class for System.Drawing.Bitmap
.
System.Drawing.Image
is abstract class as well, so you can't create instance of it. You'll have to create instance of System.Drawing.Bitmap
only.
Image.FromFile
, Image.BlahBlah... returns you instance of Bitmap
only.
As the MSDN documentation clearly states about System.Drawing.Image
:
An abstract base class that provides functionality for the Bitmap and Metafile descended classes.
So you cannot compare them. The System.Drawing.Bitmap
class is a concrete implementation of the abstract System.Drawing.Image
class.
Image is a base abstract class representing a raster image. Bitmap is one implementation of this abstract class based on GDI+.
Bitmap bmp = (Bitmap)Image.FromFile(path); // Works
So, although you can't create an object of type "Image", you can still use its methods. Note however the cast to Bitmap.
© 2022 - 2024 — McMap. All rights reserved.
is an
Image. – Trolly