18

System.Drawing.Image我很困惑和之间有什么不同System.Drawing.Bitmap

有人可以解释这两种类型之间的主要区别吗?

为什么要使用 System.Drawing.Bitmap 而不是 System.Drawing.Image ?

4

4 回答 4

17

Bitmap继承自Image

System.Drawing.Bitmap : System.Drawing.Image
{ }

Image是一个抽象类,这意味着:

abstract 修饰符表示被修改的事物有一个缺失或不完整的实现。

Bitmap是一个密封类,这意味着:

当应用于一个类时,sealed 修饰符防止其他类从它继承。

请参阅以下内容:

Bitmap bmp = new Bitmap(filename); // Works
Image img = new Image(); // The compiler says: "Cannot access internal constructer 'Image' here.

这是因为Image不打算以这种方式使用。它只是为Bitmap类提供功能。

因此Bitmap在处理像素化图像时使用,如 jpeg、png、bmp 等。

如果您希望您的方法中没有特定类型的图像并且 的方法Image就足够了,请使用更通用Image的作为参数类型。然后,此方法也将接受其他继承自Image的类,例如Metafile.

于 2013-10-30T09:24:54.597 回答
4

不知道你的意思是什么不同?

System.Drawing.Image是 的基类System.Drawing.Bitmap

System.Drawing.Image也是抽象类,所以你不能创建它的实例。您必须只创建实例System.Drawing.Bitmap

Image.FromFile, Image.BlahBlah... 仅返回您的实例Bitmap

于 2013-10-30T09:21:23.810 回答
3

正如 MSDN 文档明确指出的那样System.Drawing.Image

为 Bitmap 和 Metafile 派生类提供功能的抽象基类。

所以你无法比较它们。System.Drawing.Bitmap类是抽象类的具体实现System.Drawing.Image

于 2013-10-30T09:22:10.983 回答
1

Image 是表示光栅图像的基本抽象类。Bitmap 是这个基于 GDI+ 的抽象类的一种实现。

于 2013-10-30T09:24:40.920 回答