Подтвердить что ты не робот

Изображение против класса Bitmap

В последнее время я много читаю на своем С# (моя команда медленно переходит на С#), и мне трудно понять различия между классом Image и классом Bitmap. Теперь я знаю, что Bitmap наследует класс Image, но из того, что я понимаю, оба очень похожи. Может ли кто-нибудь пролить свет на это, пожалуйста?

4b9b3361

Ответ 1

Класс Bitmap представляет собой реализацию класса Image. Класс Image является абстрактным классом;

Класс Bitmap содержит 12 конструкторов, которые строят объект Bitmap из разных параметров. Он может построить битмап из другого растрового изображения и строковый адрес изображения.

Подробнее в в этом всеобъемлющем примере.

Ответ 2

Это объяснение, потому что я видел вещи, сделанные в коде, которые честно сбивают с толку - я думаю, что следующий пример может помочь другим.

Как уже говорилось ранее, Bitmap наследует от абстрактного Image класс

Эффект

Эффект означает, что вы не можете создать экземпляр 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);

Приятно, что вы можете нарисовать объект imgGood с помощью объекта Graphics

    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!

Ответ 3

Изображение предоставляет абстрактный доступ к произвольному изображению, он определяет набор методов, которые можно логически применять при любой реализации Image. Он не ограничен каким-либо конкретным форматом изображения или реализацией. Bitmap - это конкретная реализация для абстрактного класса изображения, который инкапсулирует объект растрового изображения Windows GDI. Растровое изображение - это всего лишь конкретная реализация для абстрактного класса изображения, который ретранслирует по объекту растрового изображения GDI.

Вы можете, например, создать собственную реализацию для абстрактного изображения, наследуя из класса Image и реализуя абстрактные методы.

Во всяком случае, это просто простое базовое использование ООП, его не должно быть трудно поймать.