Dav*_*rta 37
这是一个澄清,因为我已经看到在代码中完成的事情真的令人困惑 - 我认为以下示例可能会帮助其他人.
正如其他人之前所说的那样 - Bitmap继承自Abstract Image类
Abstract有效意味着您无法创建它的New()实例.
Image imgBad1 = new Image(); // Bad - won't compile
Image imgBad2 = new Image(200,200); // Bad - won't compile
Run Code Online (Sandbox Code Playgroud)
但是你可以做到以下几点:
Image imgGood; // Not instantiated object!
// Now you can do this
imgGood = new Bitmap(200, 200);
Run Code Online (Sandbox Code Playgroud)
您现在可以像使用相同的位图对象一样使用imgGood,如果您已完成以下操作:
Bitmap bmpGood = new Bitmap(200,200);
Run Code Online (Sandbox Code Playgroud)
这里的好处是你可以使用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);
Run Code Online (Sandbox Code Playgroud)
这里的imgGood可以是任何 Image对象 - Bitmap,Metafile或其他任何继承自Image的东西!
use*_*637 11
Image提供对任意图像的抽象访问,它定义了一组可以在Image的任何实现上进行逻辑应用的方法.它不受任何特定图像格式或实现的限制.位图是图像抽象类的特定实现,它封装了窗口GDI位图对象.Bitmap只是Image抽象类的一个特定实现,它在GDI位图Object上进行中继.
例如,您可以通过继承Image类并实现抽象方法,为Image摘要创建自己的实现.
无论如何,这只是OOP的一个简单的基本用法,它应该不难捕捉.