System.Drawing.Image
我很困惑和之间有什么不同System.Drawing.Bitmap
有人可以解释这两种类型之间的主要区别吗?
为什么要使用 System.Drawing.Bitmap 而不是 System.Drawing.Image ?
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
.
不知道你的意思是什么不同?
System.Drawing.Image
是 的基类System.Drawing.Bitmap
。
System.Drawing.Image
也是抽象类,所以你不能创建它的实例。您必须只创建实例System.Drawing.Bitmap
。
Image.FromFile
, Image.BlahBlah... 仅返回您的实例Bitmap
。
正如 MSDN 文档明确指出的那样System.Drawing.Image
:
为 Bitmap 和 Metafile 派生类提供功能的抽象基类。
所以你无法比较它们。System.Drawing.Bitmap
类是抽象类的具体实现System.Drawing.Image
。
Image 是表示光栅图像的基本抽象类。Bitmap 是这个基于 GDI+ 的抽象类的一种实现。