图像与位图类

最近我一直在阅读我的C#(我的团队正在慢慢转向C#),并且无法理解Image类和Bitmap类之间的区别。 现在我知道Bitmapinheritance了Image类,但从我所了解的两者都非常相似。 任何人都可以点亮这个?

Bitmap类是Image类的一个实现。 Image类是一个抽象类;

Bitmap类包含12个构造函数,它们根据不同的参数构造Bitmap对象。 它可以从另一个位图构build位图,以及图像的string地址。

在这个综合样本中看到更多。

这是一个澄清,因为我已经看到在代码中做的事情真的混淆 – 我认为下面的例子可能会帮助其他人。

正如其他人之前所说 – 位图从Abstract Image类inheritance

有效的抽象意味着你不能创build一个New()实例。

  Image imgBad1 = new Image(); // Bad - won't compile Image imgBad2 = new Image(200,200); // Bad - won't compile 

但是您可以执行以下操作:

  Image imgGood; // Not instantiated object! // Now you can do this imgGood = new Bitmap(200, 200); 

您现在可以像使用相同的位图对象一样使用imgGood,如果您完成了以下操作:

  Bitmap bmpGood = new Bitmap(200,200); 

这里的好处是你可以使用Graphics对象来绘制imgGood对象

  Graphics gr = default(Graphics); gr = Graphics.FromImage(new Bitmap(1000, 1000)); Rectangle rect = new Rectangle(50, 50, imgGood.Width, imgGood.Height); // where to draw gr.DrawImage(imgGood, rect); 

这里的imgGood可以是任何图像对象 – 位图,图元文件,或任何其他从图像inheritance!

图像提供对任意图像的抽象访问,它定义了一组可以在逻辑上应用于Image的任何实现的方法。 它不受限于任何特定的图像格式或实现。 位图是封装Windows GDI位图对象的图像抽象类的具体实现。 位图仅仅是一个特定的实现对图像抽象类inheritanceGDI位图对象。

例如,您可以通过从Image类inheritance并实现抽象方法来为Image抽象创build自己的实现。

无论如何,这只是一个简单的面向对象的基本使用,不应该难以捉摸。