我很难理解Image
班级和Bitmap
班级之间的区别。现在,我知道Bitmap
继承自 theImage
但据我所知两者非常相似。任何人都可以对此有所了解吗?
3 回答
Bitmap 类是 Image 类的实现。Image 类是一个抽象类;
Bitmap 类包含 12 个构造函数,它们从不同的参数构造 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 对象 - 位图、元文件或任何其他从 Image 继承的对象!
Image 提供对任意图像的抽象访问,它定义了一组可以在逻辑上应用于 Image 的任何实现的方法。它不受任何特定图像格式或实现的限制。位图是封装windows GDI位图对象的图像抽象类的具体实现。位图只是图像抽象类的一个特定实现,它依赖于 GDI 位图对象。
例如,您可以通过从 Image 类继承并实现抽象方法来创建自己的 Image 抽象实现。
无论如何,这只是 OOP 的一个简单的基本用法,应该不难掌握。