What is the difference between System.Drawing.Image and System.Drawing.Bitmap?

bitmap, c#, drawing, image, winforms

Solution

`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`.

Problem

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 ?

Original source

Related problems