图像与Bitmap类

use*_*864 64 .net c# image bitmap

我无法理解Image班级和Bitmap班级之间的差异.现在,我知道Bitmap继承自我Image所理解的两者非常相似.有人可以对此有所了解吗?

Ric*_*ard 64

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

Bitmap类包含12个构造函数,这些构造函数从不同的参数构造Bitmap对象.它可以从另一个位图构造Bitmap,以及图像的字符串地址.

在此综合示例中查看更多内容.

  • 我认为你的意思是抽象图像类的实现. (5认同)

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的一个简单的基本用法,它应该不难捕捉.