我不太清楚System.Drawing.Image
和System.Drawing.Bitmap
之间有何不同。
能否有人解释一下这两种类型的主要区别?
为什么要使用 System.Drawing.Bitmap 而不是 System.Drawing.Image 呢?
我不太清楚System.Drawing.Image
和System.Drawing.Bitmap
之间有何不同。
能否有人解释一下这两种类型的主要区别?
为什么要使用 System.Drawing.Bitmap 而不是 System.Drawing.Image 呢?
位图
从图像
继承:
System.Drawing.Bitmap : System.Drawing.Image
{ }
Image
是一个抽象类,这意味着:
抽象修饰符表示被修饰的东西具有缺失或不完整的实现。
Bitmap
是一个密封类,这意味着:
当应用于一个类时,sealed 修饰符防止其他类继承它。
请参见以下内容:
Bitmap bmp = new Bitmap(filename); // Works
Image img = new Image(); // The compiler says: "Cannot access internal constructer 'Image' here.
这是因为 Image
不是用来这样使用的。它仅提供了 Bitmap
类的功能。
所以在处理像 jpeg、png、bmp 等像素化图像时,请使用 Bitmap
。
如果你的方法不需要特定类型的图像,而且 Image
的方法足够使用,请将更通用的 Image
作为参数类型。这个方法也会接受其他继承自 Image
的类,例如 Metafile
。
g.DrawImage(mybitmap, 0, 0)
是可行的,其中 mybitmap
的类型为 Bitmap
(这里,g
的类型为 Graphics
,而 DrawImage
接受 Image
作为参数)。 - BeemerGuyImage.FromFile()
有什么好处吗?我已经看到它被多次使用,只是在下一步中转换为位图。 - Adrian Hood Sr我不确定你说的是什么区别?
System.Drawing.Image
是 System.Drawing.Bitmap
的基类。
System.Drawing.Image
同样也是抽象类,因此您无法创建它的实例。您只能创建 System.Drawing.Bitmap
的实例。
Image.FromFile
、Image.BlahBlah... 只会返回 Bitmap
的实例。
System.Drawing.Image
是一个提供Bitmap
和Metafile
派生类功能的抽象基类。因此,您不能将它们进行比较。System.Drawing.Bitmap
类是System.Drawing.Image
抽象类的具体实现。Image是一个基础抽象类,代表着光栅图像。Bitmap是基于GDI+实现的该抽象类的一种实现。
Bitmap bmp = (Bitmap)Image.FromFile(path); // Works
虽然您无法创建“Image”类型的对象,但仍可使用其方法。请注意需要将其强制转换为“Bitmap”类型。