我很困惑System.Drawing.Image
和System.Drawing.Bitmap
有人可以解释这两种类型之间的主要区别吗?
为什么要使用System.Drawing.Bitmap而不是System.Drawing.Image?
答案 0 :(得分:13)
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
。
答案 1 :(得分:4)
我不确定你的意思是什么?
System.Drawing.Image
是System.Drawing.Bitmap
的基类。
System.Drawing.Image
也是抽象类,因此您无法创建它的实例。您只需要创建System.Drawing.Bitmap
的实例。
Image.FromFile
,Image.BlahBlah ...仅返回Bitmap
的实例。
答案 2 :(得分:2)
由于MSDN文档明确说明了System.Drawing.Image
:
一个抽象基类,为Bitmap和Metafile后续类提供功能。
所以你无法比较它们。 System.Drawing.Bitmap
类是抽象System.Drawing.Image
类的具体实现。
答案 3 :(得分:1)
Image是表示栅格图像的基本抽象类。 Bitmap是基于GDI +的这个抽象类的一个实现。