我无法理解Image
类和Bitmap
类之间的差异。现在,我知道Bitmap
继承自Image
,但据我所知,两者非常相似。有人可以对此有所了解吗?
Bitmap类是Image类的实现。 Image类是一个抽象类;
Bitmap类包含12个构造函数,这些构造函数从不同的参数构造Bitmap对象。它可以从另一个位图构造Bitmap,以及图像的字符串地址。
这是一个澄清,因为我已经看到在代码中完成的事情真的令人困惑 - 我认为以下示例可能会帮助其他人。
正如其他人之前所说的那样 - Bitmap继承自Abstract Image类
Abstract有效意味着您无法创建它的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可以是任何Image对象 - Bitmap,Metafile或其他任何继承自Image的东西!
Image提供对任意图像的抽象访问,它定义了一组可以在Image的任何实现上进行逻辑应用的方法。它不受任何特定图像格式或实现的限制。位图是图像抽象类的特定实现,它封装了窗口GDI位图对象。 Bitmap只是Image抽象类的一个特定实现,它在GDI位图Object上进行中继。
例如,您可以通过继承Image类并实现抽象方法,为Image摘要创建自己的实现。
无论如何,这只是OOP的一个简单的基本用法,它应该不难捕捉。